Menu
CoddyTech

訪問者は誰?

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 %}
challenge icon

チャレンジ

簡単

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