我目前正在嘗試覆蓋Django 1.4中使用的默認窗體登錄到管理網站(我的網站使用一個額外的'令牌'字段用戶需要選擇雙因素身份驗證,對於網站工作人員是強制性的)。 Django的默認表單不支持我所需要的。目前,我在我的templates/
目錄中有一個名爲templates/admin/login.html
的文件,該文件似乎正確覆蓋了我在整個網站中使用的模板。該文件的內容如下簡單:Django - 覆蓋管理網站的登錄表格
# 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
作爲要顯示的表單,但通過Django Admin登錄路由,Django喜歡將自己的表單提供給此模板,因此只有username
和password
字段呈現。有什麼辦法可以讓這項工作成功嗎?或者說,我只是將HTML字段'硬編碼'爲表單中的內容而已?
這個幾乎奏效:我現在唯一的問題是重寫此類會導致.autodiscover()方法停止工作。刪除此操作會從管理網站中刪除我的所有模型。我不確定如何從另一個應用程序的admin.py模塊明確導入管理模型,這是可能的(或者更好,我們可以爲我的新子類AdminSite啓用autodiscover()嗎?) – 2012-07-15 07:48:49