現在、管理サイトにログインするときにDjango 1.4で使用されるデフォルトのフォームを上書きしようとしています(私のサイトでは、2要素認証にオプトインするユーザーに必要な追加の「トークン」フィールドを使用し、サイトスタッフには必須です)。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>
私の問題は、AuthenticationForm
表示するフォームとして自分のフォームを提供しているため、通常のログインURLを使用してアクセスすると、提供されたフォームが完全に機能することですが、Django Adminログインルートを介して、Djangoは独自のフォームをこのテンプレートに提供することを好みます。username
とpassword
フィールドがレンダリングされます。これを機能させる方法はありますか、それともHTMLフィールドをフォームに「ハードコーディング」したほうがよいのでしょうか。