Python Django 入門トップページ


ユーザ認証とコメント掲示板の開発

  1. プロジェクトの概要
  2. プロジェクトの作成と初期設定
  3. アプリケーションの作成と有効化
  4. ルートの記述
  5. ビューの定義
  6. HTML のテンプレート化
  7. HTML ファイルの作成
  8. Web ページ雛形の表示確認
  9. トップページの作成
  10. データベースのマイグレーション
  11. ユーザの作成
  12. ユーザ認証機能の実装
  13. セッション情報の確認
  14. ユーザ認証の状態を表示
  15. Navbar を設置
  16. モデルの作成とマイグレーション
  17. テストデータの投入
  18. コメントの一覧表示
  19. ページネーションと更新逆順表示
  20. コメント投稿機能の実装
  21. フラッシュメッセージ
  22. コメント詳細表示ページの実装
  23. 投稿者のユーザ名とメールアドレスの表示
  24. 投稿者であるかどうかの判断
  25. 編集・更新機能の実装
  26. コメント削除機能の実装
  27. Navbar の調整
  28. Profile の表示
  29. Profile の編集と更新
  30. パスワードの変更
  31. 管理サイトの準備
  32. 管理ユーザの登録
  33. 管理サイトへのログインとスタッフの登録
  34. グループの追加と権限の付与
  35. 管理サイトに comments アプリケーションを登録
  36. Comments アプリケーションから管理サイトへ

ユーザ認証とコメント掲示板の開発

管理サイトの準備

次は Django の管理サイトを準備しよう.この管理サイトを使うと様々な操作ができるようになります.

まず,プロジェクトの urls.py でコメントアウトしていた部分を有効にします.

django_comment_auth/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include
from django.contrib.auth import views as auth_views
from django_comment_auth import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('comments/', include('comments.urls')),
    path('', views.index, name='index'),
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/password/', auth_views.PasswordChangeView.as_view(template_name='registration/password_form.html'), name='password_change_form'),
    path('accounts/password_change_done/', auth_views.PasswordChangeDoneView.as_view(template_name='registration/password_change_done.html'), name='password_change_done'),
]

settings.py で admin アプリがインストールされている(コメントアウトしていない)ことを確認してください.

django_comment_auth/settings.py
# Application definition

INSTALLED_APPS = [
    'comments.apps.CommentsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

現時点では全てのユーザが管理サイトに移動できるようにトップページにリンクを作成します.(後のステップでログイン後に管理サイトのリンクが表示されるように変更します.)

comments/templates/index.html
{% extends "base.html" %}

{% block title %}
コメント投稿アプリケーション
{% endblock %}

{% block content %}
<h1 class="my-5">コメント投稿アプリケーション</h1>
{% if user.is_authenticated %}
        <p>
            ようこそ {{ user.username }} さん.ログイン中です.
        </p>
        <p>
            <a href="{% url 'comments:index' %}">
                コメント一覧ページに移動します.
            </a>
        </p>
    {% else %}
        <p>
            ログインしていません.
            <a href="{% url 'comments:index' %}">
                ここからログイン
            </a>してください
        </p>
    {% endif %}
    <p>
        <a href="/admin/">管理サイト</a>
    </p>
{% endblock content %}

Web サーバを再起動して,管理サイトを開きます.

(py39) C:\Users\lecture\Documents\django\django_comment_auth>python manage.py runserver ⏎
Watching for file changes with StatReloader
Performing system checks...

まだこの管理サイトにログインできるユーザが準備できていません.すでに登録済みの user_a などのユーザでもログインはできないことを確認してください.

django2022-00120-0

次のステップでは管理ユーザを登録します.

目次に戻る