9

/adminスタッフ以外のユーザーがログインするために、次の場所にあるログイン ページを使用できますか? django 設定ファイルで次の設定を使用しています。

LOGIN_URL = '/admin/'
LOGIN_REDIRECT_URL = '/'

ログインしても、ルート フォルダーにリダイレクトされません。私はそれを正しい方法でやっていますか?

注:@login_requiredビューでデコレータを使用しています。

編集

次の URL で管理サイトにログインします。http://127.0.0.1:8000/admin/?next=/

4

2 に答える 2

15

スタッフ以外のメンバーは管理者ビューからログインできないため、ログインできません。

ただし、必要なことを正確に実行する Django ビューがあります。django.contrib.auth.views.login

に簡単に追加できますurlconf

from django.contrib.auth.views import login

urlpatterns = ('',
    #snip
    url(r'^login/$', login)
)

ドキュメントをチェックして、その動作をカスタマイズする方法を確認してください: https://docs.djangoproject.com/en/dev/topics/auth/#limiting-access-to-logged-in-users

使用するビューのテンプレートを定義するだけで済みます。デフォルトでは、テンプレートは にありますregistration/login.htmlが、オーバーライドすることができます。

アップデート

1)django 1.11+の場合、コードは実際にLoginViewを使用し、コードには警告メッセージさえあるため、 LoginView(つまりfrom django.contrib.auth.views import LoginView)を使用することをお勧めします:loginlogin

warnings.warn(
    'The login() view is superseded by the class-based LoginView().',
    RemovedInDjango21Warning, stacklevel=2
)

2) 管理者のログイン ページのデフォルト ヘッダーを変更したい場合があります。site_headerこれは、コンテキストを提供することで実行できます。

したがって、更新されたバージョンは次のようになります。

from django.contrib.auth.views import LoginView

urlpatterns = [
   # your patterns here,
    url(r'^login/$',
        LoginView.as_view(
            template_name='admin/login.html',
            extra_context={
                'site_header': 'My custom header',
            })),
]
于 2012-05-23T14:00:16.530 に答える
7

Django 1.6 では、次の設定で Django 独自の管理者ログイン テンプレートを使用できました。次に、「/」を開くと、ログイン画面にリダイレクトされ、ログイン後に「/」に戻ります

設定.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',
    'south',
)

LOGIN_URL = '/login'

urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.contrib.auth.views import login

admin.autodiscover()
urlpatterns = patterns(
    '',
    url(r'^', include('core.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/$', login, {'template_name': 'admin/login.html'})
    # I didn't create this 'admin/login.html' template
    # Django will use the one from the admin application ;-)
)

コア/urls.py

from django.conf.urls import patterns, url
urlpatterns = patterns(
    'core.views.web_views',
    url(r'^$', 'home'),
)

コア/ビュー/web_views.py

from django.shortcuts import render_to_response
from django.template.context import RequestContext

__author__ = 'tony'

from django.contrib.auth.decorators import login_required

@login_required
def home(request):
    return render_to_response('home.html', {}, context_instance = RequestContext(request))
于 2014-06-04T13:30:49.580 に答える