我目前正在尝试覆盖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管理登录路由访问时,Django喜欢提供自己的表单给这个模板,因此只有username
和password
字段被渲染。有没有办法使这个工作,或者我最好只是将HTML字段'硬编码'到表单中呢?