Menu
CoddyTech

谁在访问

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

任何打开这个笔记应用的人都能看到所有笔记。要让每个人都有自己的笔记,网站首先得知道是谁在访问。

Django 的应用 django.contrib.auth 使用 User 模型存储账户信息:用户名、哈希密码和电子邮件地址。有人登录后,Django 会通过会话记住他们。浏览器会在每个请求中发回一个小值,也就是 Cookie,它指向服务器上的一行记录。

对于每个请求,Django 都会将访问者放在 request.user 中,模板可以通过 user 获取它。尚未登录的访问者是 AnonymousUser,因此可以通过 is_authenticated 进行检查。商店只会向访问者显示横幅:

{% if not user.is_authenticated %}
    <p class="banner">Make an account to save your cart.</p>
{% endif %}
challenge icon

挑战

简单

在 base.html 中的 <div class="account"> 里面,显示访问者的身份。有人登录时,框中会显示 Signed in as 和他们的用户名,例如 Signed in as ada。否则会显示 You are not signed in.

打开 /:页面会显示 You are not signed in.。使用 ada 登录 /admin/(密码为 coddy-pass-123),然后打开 /:页面会显示 Signed in as ada。

亲手试试

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>{% block title %}Notes{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'notes/style.css' %}">
</head>
<body>
    <header>
        <a class="brand" href="{% url 'notes:list' %}">Notes</a>
        <nav>
            <a href="{% url 'notes:create' %}">New note</a>
        </nav>
        <div class="account">
        </div>
    </header>
    <main>
        {% block content %}{% endblock %}
    </main>
</body>
</html>

用户和账户中的所有课

自己练习: Django 在线编辑器