我是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代码。为什么不这样呢?
答案 0 :(得分:7)
form
是一个上下文变量,而不是模板标记。因此,请访问{{ form }}
或{{ form.username }}
!
答案 1 :(得分:1)
问题解决了。
{% ... %}
和{{ ... }}
之间存在混淆。
{{ variable name }}
{% command %}
应该是{{ form.username }}
和{{ form.password }}
而不是{% form.username %}
和{% form.password %}
。