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

时间:2010-11-04 05:34:26

标签: 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 %}

这是非法的吗?有错误:

TemplateSyntaxError at /users/register/submit

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

2 个答案:

答案 0 :(得分:10)

Django doc说:

  

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

这意味着你不能写Python。

然而,在讨论变量时,doc也说明了这一点:

  

幕后花絮

     

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

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

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

{% if request.session.user_name %}

答案 1 :(得分:1)

请注意,您需要以下列方式传递要评估的变量。

您的python脚本

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 template docs以获得进一步说明。