我目前正在尝试在登录到管理站点时覆盖 Django 1.4 中使用的默认表单(我的站点使用选择加入双因素身份验证的用户所需的额外“令牌”字段,并且对于站点工作人员是强制性的)。Django 的默认表单不支持我所需要的。目前,我的templates/
目录中有一个名为的文件templates/admin/login.html
,它似乎正确地覆盖了与我在网站其余部分中使用的模板一起使用的模板。该文件的内容如下:
# admin/login.html:
{% extends "login.html" %}
实际登录表单如下:
# login.html:
{% load url from future %}<!DOCTYPE html>
<html>
<head>
<title>Please log in</title>
</head>
<body>
<div id="loginform">
<form method="post" action="{% url 'id.views.auth' %}">
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}" />
{{ form.username.label_tag }}<br/>
{{ form.username }}<br/>
{{ form.password.label_tag }}<br/>
{{ form.password }}<br/>
{{ form.token.label_tag }}<br/>
{{ form.token }}<br/>
<input type="submit" value="Log In" />
</form>
</div>
</body>
</html>
我的问题是提供的表单在使用我的正常登录 URL 访问时工作得非常好,因为我提供自己AuthenticationForm
的表单作为要显示的表单,但是通过 Django Admin 登录路由,Django 喜欢向这个模板提供它自己的表单,因此只有username
和password
字段渲染。有什么办法可以使这项工作,还是我最好将HTML字段“硬编码”到表单中?