谁在访问
本课属于 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 %}挑战
简单在 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 在线编辑器