Django:无效的块标记'form.username'

时间:2011-03-19 17:38:47

标签: python django

我是Django的新手,我正在尝试创建一个登录页面。

这是我的 urls.py 文件的一部分:

urlpatterns = patterns('',
    (r'^$', main_page),
    (r'^login/$', 'django.contrib.auth.views.login'),
)

这是我登录页面的模板( registration / login.html ):

<html>
<head>
<title>User Login</title>
</head>

<body>
    <h1>User Login</h1>
    {% if form.errors %}
    <p>username and password don't match.</p>
    {% endif %}
    <form method="post" action=".">
        <p>
            <label for="id_username">Username:</label> 
                    {% form.username %}
        </p>
        <p>
            <label for="id_password">Password:</label> 
                    {% form.password %}
        </p>
        <input type="hidden" name="next" value="/" /> 
            <input type="submit" name="login" />
    </form>
</body>
</html>

当我启动应用程序并转到 login.html 时,收到以下错误消息:

  

/ login /

中的TemplateSyntaxError      

无效的块标记:'form.username'

我不明白出了什么问题。据我所知,登录视图应该加载此模板并传递form对象。打印时,form.username属性应生成用户名文本字段的HTML代码。为什么不这样呢?

2 个答案:

答案 0 :(得分:7)

form是一个上下文变量,而不是模板标记。因此,请访问{{ form }}{{ form.username }}

答案 1 :(得分:1)

问题解决了。

{% ... %}{{ ... }}之间存在混淆。

{{ variable name }}

{% command %}

应该是{{ form.username }}{{ form.password }}

而不是{% form.username %}{% form.password %}