Django中是否有内置的login模板?

我想让用户在查看页面之前login。 有没有用户login的内置模板,这样我就不必写我自己的login页面?

是。 你可以阅读所有关于它在这里: https : //docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required …但这里有一些要点:

  • settings.py中将'django.contrib.auth.middleware.AuthenticationMiddleware'添加到MIDDLEWARE_CLASSES
  • settings.py中将'django.contrib.auth ”和'django.contrib.contenttypes'INSTALLED_APPS
  • 使用django.contrib.auth.views.login为视图设置一个loginURL,例如url(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
  • 在你看来,包括login_required装饰器,并将其添加到您的视图之前。 例如…

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 。 有关该模板的更多信息可以在本文开头的链接中find。

正如作者在评论中提到的,最简单的方法是将以下几行添加到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), ) 

据我所知,除非需要用户configuration文件pipe理,否则不需要添加r'^accounts/$'r'^accounts/profile/$' URL。

正如@mmatt在注释中所build议的那样,在settings.py中设置LOGIN_REDIRECT_URL = '/'以避免login后默认redirect到/accounts/profile/ 。 请参阅Django设置文档中的LOGIN_REDIRECT_URL 。

如果你想快速启动并运行,我build议使用提供的URLConf。

例如:

 urlpatterns = [ url('^', include('django.contrib.auth.urls')) ] 

请参阅django文档中的更多详细信息: https : //docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views

@brant最为有效的回应在技​​术上是不正确的。 Django提供了默认视图来处理loginfunction,但是文档没有提供模板:

Django不提供authentication视图的默认模板。 您应该为要使用的视图创build自己的模板。 模板上下文logging在每个视图中,请参阅所有authentication视图。