2016-12-07 65 views
1

我想(在項目級):Django的1.10:設置admin.site.site_header並使用默認的管理員登錄查看

  • 使用默認的管理視圖(auth.views.login)爲我登錄視圖
  • 設置admin.site.site_headerulrs.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上面,但似乎凌亂。我想在一個地方設置這個變量,儘可能直接使用管理員。

我的高級興趣是基本上捎帶管理應用程序的普通用戶帳戶。我是否在談論這個錯誤?

回答

1

我的高級興趣是基本上捎帶的 常規用戶帳戶的管理應用程序。我是否在談論這個錯誤?

不幸的是,你是。

https://docs.djangoproject.com/en/1.10/intro/tutorial02/

管理不打算通過網站訪問者使用。這是網站 經理。

它是如此容易的添加使用現有的許多久經考驗的registrion/AUTH包之一(例如Django的allauth),試圖重新目的Django管理作爲用戶級應用程序是wastefull而不是一個身份驗證系統非常安全。

+0

那你會推薦'django-allauth'嗎?另外(考慮到你對「不太安全」的評論),似乎有人會希望他們的管理員是安全的......你會不會建議使用管理員模塊? –

+0

是強烈推薦django-allauth。不要使用管理員的普通用途,用CBVs建立一些東西 – e4c5