django:我可以在html模板中编写python吗?

Bin*_*hen 2 django django-templates

{% if request.session["user_name"] %}
<div class="abcd">user has username</div>
{% else %}
<div class="abcd">user doesn't has username</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

这是非法的吗?有错误:

TemplateSyntaxError at /users/register/submit

Could not parse the remainder: '['user_name']' from 'request.session['user_name']'
Run Code Online (Sandbox Code Playgroud)

seb*_*piq 10

Django doc说:

Django模板系统不仅仅是Python嵌入到HTML中

这意味着你无法编写Python.

不过谈论变量,文档也说:

在幕后

从技术上讲,当模板系统遇到一个点时,它会按以下顺序尝试以下查找:

  • 字典查找
  • 属性查找
  • 方法调用
  • 列表索引查找

这意味着您正在尝试的是可能的,但正确的语法是:

{% if request.session.user_name %}
Run Code Online (Sandbox Code Playgroud)