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プレイグラウンド