Использование шаблона Jinja в качестве аргумента в url_for [duplicate]

Когда вы пишете код, используя одиночные игры, скажем, регистратор или соединение с базой данных, а затем вы обнаруживаете, что вам нужно больше одного журнала или более одной базы данных, у вас проблемы.

Синглоты делают очень трудно переходить от них к обычным объектам.

Кроме того, слишком легко написать однопоточный однопоточный.

Вместо того, чтобы использовать синглтоны, вы должны передать все необходимые объекты полезности от функции к функции. Это можно упростить, если вы переместите все их в вспомогательный объект, например:

void some_class::some_function(parameters, service_provider& srv)
{
    srv.get<error_logger>().log("Hi there!");
    this->another_function(some_other_parameters, srv);
}
6
задан davidism 15 February 2016 в 18:26
поделиться

1 ответ

Все внутри {{ ... }} - это похожее на Python выражение. Вам не нужно использовать другой {{ ... }} внутри, чтобы ссылаться на переменные.

Отбросить дополнительные скобки:

<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>

(Обратите внимание, что функция url_for() принимает конечную точку name , а не URL-путь, по умолчанию имя имени функции moremagic в вашем примере).

15
ответ дан Martijn Pieters 22 August 2018 в 01:01
поделиться
  • 1
    Эй, я использую Django, и когда я делаю то же самое, что и выше, я получаю TemplateSyntaxError. Он говорит: «Невозможно проанализировать остаток: '(' static ', filename =' images / '+ card.id)' from 'url_for (' static ', filename =' images / '+ card.id)' В принципе, моя карточка. значения id равны 1, 2, 3, 4 и так далее. И мой в моем static / images / есть файлы с именем 1.jpg, 2.jpg и т. Д. И я получаю вышеуказанную ошибку. – Ankush Raghuvanshi 27 July 2016 в 19:12
  • 2
    @AnkushRaghuvanshi: этот вопрос и ответ применимы к Jinja2, not Django. Jinja2 - это проект, основанный на шаблонах Django, но не похожий на тот же проект. – Martijn Pieters♦ 27 July 2016 в 20:48
  • 3
    Согласен. Я думал, что должен упомянуть, что я использую Django для удобства других пользователей, которые могли бы мне помочь, поскольку теги в этом вопросе содержат Flask и даже Python, даже если Python не существует там, где это связано технически. Тем не менее, я получил свое решение только в официальной документации Django - & gt; [Д0] docs.djangoproject.com/en/1.9/ref/templates/builtins/… – Ankush Raghuvanshi 27 July 2016 в 20:55
  • 4
    @AnkushRaghuvanshi: не знаю, какие теги имеют отношение к Django, если честно. Flask и Jinja2 - это проекты Python, так же как Django - проект Python. Если вы занимаетесь Django, вам не нужно смотреть на тег Flask. – Martijn Pieters♦ 27 July 2016 в 21:01
  • 5
    Я согласен с тем, что вы говорите, но поскольку я не знал, будет ли возможное решение для меня или вероятное решение моего вопроса, когда я его попрошу, будет общим для Flask и Django вообще или конкретной один для Django. Следовательно, хотя мне было бы лучше упомянуть Django, чем ждать, когда кто-нибудь спросит, использую ли я Flask или Django или PHP или RubyOnRails или какую-то другую структуру XYZ. – Ankush Raghuvanshi 27 July 2016 в 21:28
Другие вопросы по тегам:

Похожие вопросы: