もた日記

くだらないことを真面目にやる

Djangoメモ(1) : 掲示板アプリを作成するチュートリアル

Django(PythonのWebアプリケーションフレームワーク)のチュートリアルを参考にDjangoで掲示板アプリケーションを作成してみる。


チュートリアル一覧

最初にチュートリアルを調べてみたところDjangoのチュートリアルとしては以下のものがあるようだ。

Django公式

(英語)Writing your first Django app, part 1 | Django documentation | Django

(日本語)はじめての Django アプリ作成、その 1 | Django documentation | Django

投票 (poll) アプリケーションを作成する。Djangoのバージョンは2.0。

Django Girls Tutorial

(英語)Introduction · Django Girls Tutorial

(日本語)イントロダクション · workshop_tutorialJP

ブログアプリケーションを作成する。Djangoのバージョンは1.11。

MDN Web Docs

Django Tutorial: The Local Library website - Learn web development | MDN

ローカルライブラリのオンラインカタログアプリケーションを作成する。Djangoのバージョンは2.0

Simple is Better Than Complex

A Complete Beginner's Guide to Django

掲示板アプリケーションを作成する。Djangoのバージョンは1.11

Mariana Mele's site

TaskBuster Django Tutorial | Marina Mele's site

タスクマネージャーアプリケーションを作成する。Djangoのバージョンは1.8

Django for Beginners

Django for Beginners

シンプルな掲示板、ブログアプリケーションを作成する。Djangoのバージョンは2.0


A Complete Beginner's Guide to Django

公式ページやDjango Girls Tutorialのチュートリアルは有名なので、今回は"Simple is Better Than Complex"の"A Complete Beginner's Guide to Django"をもとに掲示板アプリケーションを作成してみる。

simpleisbetterthancomplex.com

チュートリアルにより完成するアプリは下記リンクで確認できる。

Django Boards

また、GitHubにリポジトリもあるので自分の環境で動かしてみる。

github.com

最初にgit cloneしてパッケージをインストール。

$ git clone https://github.com/sibtc/django-beginners-guide
$ cd django-beginners-guide
$ pip install -r requirements.txt

requirements.txtの中身は下記。

$ cat requirements.txt
dj-database-url==0.4.2
Django==1.11.6
django-widget-tweaks==1.4.1
Markdown==2.6.9
python-decouple==3.1

設定は.envファイルで管理しているようなのでコピー。

$ cp .env.example .env
$ cat .env
SECRET_KEY=rqr_cjv4igscyu8&&(0ce(=sy=f2)p=f_wn&@0xsp7m$@!kp=d
DEBUG=True
ALLOWED_HOSTS=.localhost,127.0.0.1
DATABASE_URL=sqlite:///db.sqlite3
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend

マイグレーションでデータベースにテーブルを作成。

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, boards, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying boards.0001_initial... OK
  Applying boards.0002_auto_20170917_1618... OK
  Applying boards.0003_topic_views... OK
  Applying sessions.0001_initial... OK

開発用サーバを起動。

$ python manage.py runserver

ブラウザで127.0.0.1:8000にアクセス。ポート変更などをしたい場合は以下のように指定。

$ python manage.py runserver 0.0.0.0:3000

アクセスした際に下記メッセージが表示された場合は.envALLOWED_HOSTSにIPアドレスを追記。

DisallowedHost at /
Invalid HTTP_HOST header: '192.168.33.10:3000'. You may need to add '192.168.33.10' to ALLOWED_HOSTS.
ALLOWED_HOSTS=.localhost,127.0.0.1,192.168.33.10

f:id:wonder-wall:20180304185415p:plain

画面は表示されるが掲示板がないため何もできない。
掲示板は管理者のみ作成可能のようなので管理者ユーザを作成。

$ python manage.py createsuperuser
Username (leave blank to use 'vagrant'): admin
Email address: admin@example.com
Password:
Password (again):
Superuser created successfully.

admin/にアクセスして(例:http://192.168.33.10:3000/admin/)ログイン。
BoardsのAddで掲示板を作成すると表示されるようになる。

f:id:wonder-wall:20180304185956p:plain

掲示板のトピックはMarkdownエディタで編集できるようだ。

f:id:wonder-wall:20180304190021p:plain

このチュートリアルを完了するとこんな感じのアプリが作成できるので次回以降細かく見ていく。