Django: я могу написать Python внутри HTML-шаблона? - PullRequest
2 голосов
/ 04 ноября 2010
{% if request.session["user_name"] %}
<div class="abcd">user has username</div>
{% else %}
<div class="abcd">user doesn't has username</div>
{% endif %}

Это незаконно?Есть ошибки:

TemplateSyntaxError at /users/register/submit

Could not parse the remainder: '['user_name']' from 'request.session['user_name']'

Ответы [ 2 ]

10 голосов
/ 04 ноября 2010

Джанго Док говорит:

Система шаблонов Django - это не просто Python, встроенный в HTML

Это означает, что вы не можете писать на Python.

Однако, говоря о переменных, doc также говорит следующее:

За кулисами

Технически, когда система шаблонов встречает точку, она пытается выполнить следующие поиски в следующем порядке:

  • Поиск по словарю
  • Поиск атрибутов
  • вызов метода
  • Поиск по индексу списка

Это означает, что то, что вы пытаетесь, возможно, но правильный синтаксис:

{% if request.session.user_name %}
1 голос
/ 04 ноября 2010

Обратите внимание, что вам нужно передать переменные, которые должны оцениваться следующим образом.

Ваш скрипт на питоне

template_values = {
        'message': 'Invalid credentials, please try again'
            'users': users
}

path = os.path.join(os.path.dirname(__file__), 'login.html')
self.response.out.write(template.render(path, template_values))

Файл шаблона

{% ifequal users.name "name" %}
<div class="abcd">user has username</div>
{% endifequal %}

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

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