Menu
CoddyTech

登录

本课属于 Coddy Django 学习旅程的“用户和账户”单元。第 2 课,共 16 课。

这个网站可以识别已登录的用户,但没有登录页面。Django 提供了视图 LoginView。在项目的 urls.py 中添加一行,就能启用它以及退出登录和密码页面:

path("accounts/", include("django.contrib.auth.urls")),

现在,/accounts/login/ 已经存在,名称为 login。该视图会使用包含 username 和 password 字段的 form 来渲染 registration/login.html。这个模板需要你自己编写:它是一个普通的 POST 表单。Django 会在每个应用的 templates/ 文件夹中查找。路径以 registration/ 开头,而不是 notes/,因为 Django 的视图不知道你的应用是什么。

登录成功后,该视图会重定向到 LOGIN_REDIRECT_URL。它的默认值 /accounts/profile/ 在这里并不存在,所以要在 settings.py 中设置它。

challenge icon

挑战

简单

添加登录页面。

  1. 在 mysite/urls.py 中,将 django.contrib.auth.urls 配置到 accounts/ 下。
  2. 创建 notes/templates/registration/login.html,继承 notes/base.html,并在 POST 表单中显示 form,包含 {% csrf_token %} 和一个 Log in 按钮。
  3. 在 settings.py 中,将 LOGIN_REDIRECT_URL 设置为 "/"。
  4. 在 base.html 中,为已退出的访客添加指向 {% url 'login' %} 的 Log in 链接。

使用 ada 登录(密码为 coddy-pass-123):页眉会显示 Signed in as ada。

亲手试试

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("notes.urls")),
]

用户和账户中的所有课

自己练习: Django 在线编辑器