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

Я реализую поисковый API Algolia для Django, и у меня есть определенная переменная Усов {{ObjectID}}, которая соответствует идентификаторам для результатов поиска.Я могу использовать только через {% verbatim %} {{ObjectID}} {% endverbatim %}, не конфликтуя с синтаксисом шаблона Django.

Однако мне также нужна эта переменная для создания URL-адреса для идентификатора, но проблема в том, что я не могу легко передать переменную Усы в форму, которую можно использовать непосредственно с шаблонами Django.Например, простое выполнение

{% url "appName:method" {{ObjectID}} %}

конфликтует с синтаксисом шаблона Django, но попытка ivnoke verbatim через

{% url "appName:method" {%verbatim %} {{ObjectID}} {% endverbatim %} %}

также не работает, так как вызов тега шаблона втег шаблона запрещен.

Я также не могу сохранить {{ObjectID}} как временную переменную с методом или оффшорным url в отдельном методе, например

function generate (objectID){
    return "{% url 'appName:method' objectID %}"
}

//usage of method

<a href = "generate({% verbatim %}{{ObjectID}} {% endverbatim %})">link</a>

, поскольку Django будет обрабатывать urlв поле зрения и бросить NoReverseMatch, поскольку objectID еще не определено Алголией.Есть ли способ извлечь {{ObjectID}} таким образом, чтобы он мог быть передан обратно в конструктор Django url?

ПРИМЕЧАНИЕ. Моя реализация Algolia напрямую не взаимодействует с базами данных Django, а имеет собственную индексацию базы данных, которую она хранит отдельно.Дополнительная информация о algoliasearch-django Github

1 Ответ

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

Я бы предложил вам использовать что-то подобное в представлении и передать значение в шаблон:

reverse('appName:method', args=[1337]).replace('1337', '{{ObjectID}}')

Если вы должны сделать это только в шаблоне, и вы можетеУбедитесь, что часть {{ObjectID}} всегда будет в конце URL, вы можете сделать это следующим образом:

{% url "appName:method" 1337 as my_url %} <a href="{{ my_url|slice:":-5" }}{% verbatim %}{{ObjectID}}{% endverbatim %}/">...</a>

Обратите внимание, что приведенный выше код шаблона предполагает косую черту.

...