Использовать результат запроса из семантического пользовательского интерфейса внутри тега URL шаблона Django - PullRequest
0 голосов
/ 07 июня 2018

Я использую Django и semantic UI, чтобы создать окно поиска.Все работает отлично, за исключением параметров URL.

$('.ui.search').search({ 
        type          : 'standard',
        minCharacters : 2,              
        apiSettings   : {
            onResponse: function(parcelleResponse) {                        
                //DO Something
                return response;
            },
            url: "/myUrl/{query}"
        }       
    });

Я хотел бы использовать систему тегов шаблонов URL для указания URL:

{% url 'searchParcelle' {query} %}  

Но так как результаты возвращаютсяСемантический интерфейс хранится в переменной {query} , у меня ошибка шаблона:

Could not parse the remainder: '{query}' from '{query}'

Знаете ли вы, как я могу это исправить?Я мог бы сохранить это так, но так как мой URL Prod (виртуальный хост) немного отличается, я должен менять его каждый раз.

Ответы [ 2 ]

0 голосов
/ 19 июня 2018

Более прагматичным подходом было бы поменять URL-адрес с помощью заполнителя, который вы затем заменили в JavaScript.

На самом деле я сделал именно то, что вы предложили, и он работал, как ожидалосьсейчас !Спасибо за вашу помощь Дэниел Хеппер.

_urlSearch  = "{% url 'search'  '--MySearchValue--' %}";
_urlDisplay = "{% url 'display' '--MySearchValue--' %}";    
$('.ui.search').search({ 
 ...
 url: _urlSearch.replace('--MySearchValue--', '{query}')
});
0 голосов
/ 15 июня 2018

С вашим кодом есть две проблемы:

  1. у вас нет кавычек вокруг {query}, поэтому Django не рассматривает его как строку
  2. в фигурных скобках вURL будет экранирован, в результате чего URL будет выглядеть следующим образом: /myUrl/%7Bquery%7D/

Кроме того, определение URL может содержать только буквенно-цифровые символы и не совпадать с аргументом {query}.

Правильный способ сделать это - получить шаблон URL-адреса и преобразовать его в формат шаблона URL-адреса, но для этого потребуется углубиться во внутренние аспекты разрешения URL-адреса Django, и, вероятно, это не стоит хлопот.

Aболее прагматичным подходом было бы обратить URL-адрес с помощью заполнителя, который вы затем замените в JavaScript.

var url = "{% url 'searchParcelle' 'QUERYPLACEHOLDER' %}".replace(
    'QUERYPLACEHOLDER', '{query}'
)
$('.ui.search').search({ 
    type          : 'standard',
    minCharacters : 2,              
    apiSettings   : {
        onResponse: function(parcelleResponse) {                        
            //DO Something
            return response;
        },
        url: url
    }       
});
...