ページを表示する前にユーザーにサインインさせたい。ユーザーサインイン用の組み込みテンプレートはありますか。そのため、独自のサインインページを記述する必要はありませんか。
はい。これについてはすべてここで読むことができます: https://docs.djangoproject.com/en/1.8/topics/auth/default/#Django.contrib.auth.decorators.login_required ... but hereいくつかの箇条書きがあります:
'Django.contrib.auth.middleware.AuthenticationMiddleware'
_を_MIDDLEWARE_CLASSES
_の_settings.py
_に追加します'Django.contrib.auth
_の_'Django.contrib.contenttypes'
_に_INSTALLED_APPS
_ 'と_settings.py
_を追加しますurl(r'^login/$', 'Django.contrib.auth.views.login',name="my_login")
など、ビューに_Django.contrib.auth.views.login
_を使用してログイン用のURLを設定しますviews.py ...
_from Django.contrib.auth.decorators import login_required
@login_required
def home(request):
return HttpResponse('Home Page')
_
デフォルトでは、テンプレートを_my_template_directory/registration/login.html
_内に配置します。このテンプレートの詳細については、この投稿の冒頭のリンクをご覧ください。
著者によるコメントで述べたように、これを行う最も簡単な方法は、次の行をurls.py
に追加することです。
from Django.contrib.auth.views import login, logout
urlpatterns = patterns('',
url(r'^accounts/login/$', login, {'template_name': 'admin/login.html'}),
url(r'^accounts/logout/$', logout),
)
私の知る限り、r'^accounts/$'
およびr'^accounts/profile/$'
URLの追加は、ユーザープロファイル管理が必要でない限り必要ありません。
コメントで@mmattが示唆しているように、LOGIN_REDIRECT_URL = '/'
にsettings.py
を設定して、ログイン後の/accounts/profile/
へのデフォルトのリダイレクトを回避します。 LOGIN_REDIRECT_URL in Django=設定ドキュメント。
これは、適切にpath
の代わりにurl
を使用してDjango 2.xでも動作するはずです。
@brantによる pvoted response のほとんどは技術的に間違っています。 Djangoはログイン機能を処理するためのデフォルトのビューを提供しますが、 ドキュメント ではテンプレートを提供しません:
Djangoは、認証ビュー用のデフォルトテンプレートを提供しません。使用するビュー用に独自のテンプレートを作成する必要があります。テンプレートコンテキストは各ビューで文書化されています。すべての認証ビューを参照してください。
すぐに起動して実行するためのルートを取りたい場合は、提供されているURLConfを使用することをお勧めします。
例えば:
urlpatterns = [
url('^', include('Django.contrib.auth.urls'))
]
Django documentation: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-Django.contrib.auth。 views
Mrtsの答えと同様に、最近のDjangoでは、 LoginView を使用できます。 title
、site_title
などのテンプレートコンテキストを admin/base.html で使用されているように設定して、テンプレートをさらにカスタマイズし、管理者のように見えないようにすることができます。ログイン。
from Django.contrib.auth.views import LoginView
urlpatterns = [
url(
r'^accounts/login/$',
LoginView.as_view(
template_name='admin/login.html',
extra_context={
'title': 'Login',
'site_title': 'My Site',
'site_header': 'My Site Login'},
name='login'),
]