Django:无效的区块标签 'form.username
我刚开始学习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 时,我收到了以下错误信息:
TemplateSyntaxError at /login/
无效的块标签:'form.username'
我不明白哪里出错了。根据我的理解,登录视图 应该加载这个模板并传递 form
对象。当打印时,form.username
属性应该生成用于用户名文本框的HTML代码。为什么没有发生这种情况呢?
2 个回答
1
问题解决了。
这里有个混淆,就是{% ... %}
和{{ ... }}
的区别。
{{ 变量名 }}
是用来显示变量的值。
{% 命令 %}
是用来执行一些指令的。
应该用的是{{ form.username }}
和{{ form.password }}
,
而不是{% form.username %}
和{% form.password %}
。
7
form
是一个上下文变量,而不是一个模板标签。所以你可以通过 {{ form }}
或 {{ form.username }}
来访问它!