Django中是否有内置的登录模板?

时间:2010-05-19 15:56:58

标签: django login templates

我想让用户在看到页面之前登录。是否有用于用户登录的内置模板,以便我不必编写自己的登录页面?

6 个答案:

答案 0 :(得分:46)

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

  • 'django.contrib.auth.middleware.AuthenticationMiddleware'
  • 中将MIDDLEWARE_CLASSES添加到settings.py
  • 'django.contrib.auth
  • 中将'django.contrib.contenttypes''和INSTALLED_APPS添加到settings.py
  • 使用django.contrib.auth.views.login为视图设置登录网址,例如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中。有关该模板的更多信息,请参阅本文开头的链接。

答案 1 :(得分:31)

正如作者的评论中所提到的,最简单的方法是将以下行添加到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/$'网址。

正如@mmatt在评论中所建议的那样,在LOGIN_REDIRECT_URL = '/'中设置settings.py以避免在登录后默认重定向到/accounts/profile/。请参阅Django设置文档中的LOGIN_REDIRECT_URL

这也应该在Django 2.x中使用path代替url

答案 2 :(得分:14)

@brant中upvoted response最多在技术上是不正确的。 Django提供默认视图来处理登录功能,但documentation不提供模板:

  

Django没有为身份验证视图提供默认模板。您应该为要使用的视图创建自己的模板。模板上下文记录在每个视图中,请参阅所有身份验证视图。

答案 3 :(得分:4)

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

例如:

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

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

答案 4 :(得分:3)

与mrts的答案类似,在最近的Django中,您可以使用LoginView。 您可以通过设置title中使用的site_titlefrom 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'), ] 等模板上下文来进一步自定义模板,以便它看起来不像管理员登录。

^5[1-5]\d{14}$

答案 5 :(得分:0)

又快又脏。

例如,假设您正在开发一个需要登录功能但未实现自己的可重用应用程序。

如果暂时不想打扰自定义登录(视图,表单,模板,URL等),则只需在{{中将管理登录页面指定为LOGIN_URL 1}}(docs):

settings.py

当心:一个严重的缺点是您只能使用职员帐户(或超级用户)登录。