передать URL-адрес с параметром переменной от javascript до flask конечной точки - PullRequest
0 голосов
/ 06 августа 2020

Страница просмотра, на которой есть кнопка, которая запускает очистку при нажатии, а кнопка logi c находится в javascript. Теперь я привязал нажатие кнопки к функции flask. URL-адрес содержит переменную flask (например, scrape.route ('/')). Теперь я использую sh, чтобы извлечь это значение домена и передать его функции flask.

#blueprint
def create_blueprint():
    scrape = Blueprint('scrape', __name__, url_prefix='/jarvis')


    @scrape.route('<domain>/start_scrape')
    def start_scrape(domain):
      resp = get_links(domain)
      return resp
#button logic
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
  $(function() {
      $('a#start_button').bind('click', function() {
          if(!startScrape()) {
                return false;
          }
          document.getElementById('start_button').style.display = "none";
          var url = window.location.href;
          var url_splits = url.split('/');
          var domain_v = String(url_splits[url_splits.length - 1]);
          document.write(domain_v)
          $.getJSON({{ url_for('scrape.start_scrape', domain=domain_v)|tojson}}, {
                  name : $('input[name="scrape_name_input"]').val(),
                  queries : $('textarea[name="query_input"]').val()
              }, function(data) {
                endScrape();
                console.log(data);
                alert(data["message"]);
                window.location.reload();
                scrape_name_input.value = "";
              });
          return false;
      });
  });

Я привязал, чтобы получить домен, разделив URL-адрес и извлекая последнюю часть, но когда Я пытаюсь создать URL-адрес, используя url_, потому что он ведет себя странно. Для URL-адреса требуется переменная домена при создании URL-адреса, и он работает, если я жестко кодирую значение, например, 'bing', но если я использую переменную, как указано в приведенном выше коде, он не работает, и URL-адрес конечной точки становится:

GET /jarvis//start_scrape

Не знаю, почему это происходит. Мне нужно получить домен динамически, поэтому я не могу его жестко запрограммировать. Я сослался на следующее, но без помощи: Flaskr url_for с параметрами, не работающими при вызове от javascript до python, Передать аргумент flask из javascript, Передайте переменную JavaScript в Flask url_for

Мы будем благодарны за любые идеи.

1 Ответ

0 голосов
/ 07 августа 2020

Вы смешиваете серверную часть и интерфейсную часть.

В этом фрагменте

$.getJSON({{ url_for('scrape.start_scrape', domain=domain_v)|tojson}}, {})

Все в фигурных скобках {{}} - это побочный код python. А переменная domain_v - это переменная внешнего интерфейса Javascript, которую нельзя передать бэкэнд-функции.

У вас есть 2 варианта исправить это. Либо вы определили domain_v в бэкэнде с функцией синтаксического анализа URL-адресов. Или вы можете удалить url_for('scrape.start_scrape', domain=domain_v) и сделать то же самое на стороне Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...