訪問者は誰?
CoddyのDjangoジャーニー「ユーザーとアカウント」セクションの一部。レッスン 1/16。
このメモアプリを開く人は誰でも、すべてのメモを見ることができます。各ユーザーが自分専用のメモを使えるようにするには、まずサイトが誰のアクセスなのかを把握する必要があります。
Djangoのアプリdjango.contrib.authは、ユーザー名、ハッシュ化されたパスワード、メールアドレスを含むアカウントをUserモデルに保存します。誰かがログインすると、Djangoはセッションを使ってそのユーザーを記憶します。セッションとは、ブラウザーが各リクエストとともに送り返す小さな値を含むクッキーで、サーバー上の行を指し示します。
各リクエストで、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.と表示されます。
「実行」を押して、/を開きます。次に、/admin/でadaとしてログインし(パスワードはcoddy-pass-123)、もう一度/を開きます。
自分で試してみよう
{% 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プレイグラウンド