我想(在項目級):Django的1.10:設置admin.site.site_header並使用默認的管理員登錄查看
- 使用默認的管理視圖(
auth.views.login
)爲我登錄視圖 - 設置
admin.site.site_header
內ulrs.py
,使其出現在雙方的登錄和管理頁面
首先,這樣做並更新管理頁面上的site_header
...
# urls.py
admin.site.site_header = "my header name"
urlpatterns = [
url(r'^admin/?', admin.site.urls),
url(r'^', include('django.contrib.auth.urls')),
...
]
從這裏看來我應該能夠做這一點:
# registration/login.html
{% extends "admin/login.html" %}
或者這(從Django中/管理/模板/ login.html的複製/粘貼):
# registration/login.html
{% extends "admin/base_site.html" %}
{% load i18n static %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}" />
{{ form.media }}
{% endblock %}
...
既不像管理員視圖那樣使用「我的標題名稱」標題。
爲什麼我的registration/login.html
沒有得到admin.site.site_header
我在urls.py
中設置?
謝謝。
更新:
我看到auth/view.py
默認情況下不具有site_header
在其上下文:
# auth/view.py
def login(...
current_site = get_current_site(request)
context = {
'form': form,
redirect_field_name: redirect_to,
'site': current_site,
'site_name': current_site.name,
}
...
這admin/sites.py
負責定義AdminSite
這臺site_header
爲admin網站
class AdminSite(object):
...
def each_context(self, request):
"""
Returns a dictionary of variables to put in the template context for
*every* page in the admin site.
For sites running on a subpath, use the SCRIPT_NAME value if site_url
hasn't been customized.
"""
script_name = request.META['SCRIPT_NAME']
site_url = script_name if self.site_url == '/' and script_name else self.site_url
return {
'site_title': self.site_title,
'site_header': self.site_header,
'site_url': site_url,
'has_permission': self.has_permission(request),
'available_apps': self.get_app_list(request),
}
...
我看我如何創建我自己的base_site.html
(硬編碼{{ "my header name }}
)用於複製/粘貼login.html
上面,但似乎凌亂。我想在一個地方設置這個變量,儘可能直接使用管理員。
我的高級興趣是基本上捎帶管理應用程序的普通用戶帳戶。我是否在談論這個錯誤?
那你會推薦'django-allauth'嗎?另外(考慮到你對「不太安全」的評論),似乎有人會希望他們的管理員是安全的......你會不會建議使用管理員模塊? –
是強烈推薦django-allauth。不要使用管理員的普通用途,用CBVs建立一些東西 – e4c5