2016-12-07 5 views
1

私は(プロジェクトレベルで)にしようとしている使用:ジャンゴ1.10:admin.site.site_headerを設定すると、デフォルトの管理者ログインビュー

  • を使用し、私のログインビューとしてデフォルトの管理ビュー(auth.views.login
  • それが、これは管理者ページに site_headerを更新しないこと、両方のログインと管理ページ

最初に表示されるようにulrs.pyadmin.site.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" %} 
    

    またはこの(ジャンゴ/管理/テンプレート/ 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 %} 
    ... 
    

    管理ビューのように、「my header name」のヘッダーを使用しないでください。

    なぜ私は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は、管理者のためのsite_headerを設定AdminSiteを定義するための責任があることサイト

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

    上記のコピー/ペーストlogin.htmlで使用するbase_site.html(ハードコード{{ "my header name }})を作成する方法はわかりましたが、それは面倒です。私はこの変数を1か所に設定し、できるだけ多くの管理者を直接使用したいと思っています。

    私の高度な関心は、基本的には、通常のユーザーアカウント用の管理アプリケーションをピギーバックすることです。私はこれについて間違っていますか?

  • 答えて

    1

    私の高度な関心事は、基本的に の一般ユーザーアカウントの管理アプリをピギーバックすることです。私はこれについて間違っていますか?

    残念ながら、はい、あります。

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

    管理者は、サイト訪問者によって使用されるものではありません。サイト のサイト用です。

    これは、利用可能試さ多く、テストregistrion /認証パッケージのいずれか(例はジャンゴ・allauth)ユーザーレベルのアプリとしてしようとして再目的のDjangoの管理者がwastefullであることとないを使用した認証システムを追加することは簡単です非常に安全です。

    +0

    'django-allauth'をお勧めしますか?また、(あまり安全ではないとのあなたのコメントを考慮して)、管理者には安全であることが望まれます。管理モジュールを使用しないことをお勧めしますか? –

    +0

    はいdjango-allauthをお勧めします。通常の使用には管理者を使用せず、CBVで何かを構築する – e4c5

    関連する問題