Python Django 1.10:设置admin.site.site_头并使用默认管理员登录视图

Python Django 1.10:设置admin.site.site_头并使用默认管理员登录视图,python,django,Python,Django,我正在尝试(在项目层面): 使用默认的管理员视图(auth.views.login)作为我的登录视图 在ulrs.py中设置admin.site.site\u标题,使其显示在登录和管理页面上 首先,这样做会更新管理页面上的site\u标题 # urls.py admin.site.site_header = "my header name" urlpatterns = [ url(r'^admin/?', admin.site.urls), url(r'^', inclu

我正在尝试(在项目层面):

  • 使用默认的管理员视图(
    auth.views.login
    )作为我的登录视图
  • ulrs.py
    中设置
    admin.site.site\u标题
    ,使其显示在登录和管理页面上
首先,这样做会更新管理页面上的
site\u标题

# 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/admin/templates/login.html复制/粘贴):

admin/sites.py
负责定义
AdminSite
,它为管理站点设置
site\u头

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
(硬编码
{{“我的头名}}}
)以用于上面的复制/粘贴
login.html
,但这看起来很混乱。我想在一个地方设置这个变量,并尽可能直接使用admin

我最感兴趣的是基本上为普通用户帐户使用管理应用程序。我这样做错了吗

我的高层次兴趣是基本上背上管理员应用程序 普通用户帐户。我做错了吗

不幸的是,是的,你是

管理员不是供站点访问者使用的。它是为站点用户使用的 经理


使用众多经过尝试和测试的registrion/auth软件包(例如django allauth)添加身份验证系统非常容易,因此尝试将django admin重新用作用户级应用程序既浪费资源,也不十分安全。

您会推荐
django allauth
吗不太安全),似乎有人希望他们的管理员是安全的…你建议不要使用管理员模块吗?是的,强烈推荐django allauth。不要将管理员用于普通用途,使用CBV构建一些东西
# 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,
    }

    ...
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),
        }
...