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视图。