Django入門: 簡単な一行掲示板アプリを作る その1【Windows10】

78, 2020-10-15

目次

Djangoで一行掲示板

Django(ジャンゴ)はPythonのWebフレームワークです。
今回からこのDjangoを使って簡単な掲示板アプリを作ってみたいと思います。

Django3.1.1で0から開発し、最終的にアプリが開発サーバーを通じてブラウザ上で動作する所までやります。
この記事を読めばDjangoの基本的な使い方がわかります。

以下が開発の前提条件です。

  • OSはWindows10

  • 環境内でPython, Pipが使える

  • Pythonの基本的な文法がわかる

この条件に合えばこの入門記事を読むことは可能です。
それではさっそくはじめましょう。

仮想環境を作る

今回はファイルシステム上の適当なディレクトリにlinebbsというディレクトリを作り、ここで作業を行うことにします。
コマンドプロンプトを起動し、適当な場所にlinebbsディレクトリーを作ってください。パスに日本語が含まれていない所がいいです。
ちなみにこのシリーズでは仮想環境を使うので、PowerShellではなくコマンドプロンプトを使うようにしてください(PowerShellだと仮想環境が動きません)。

> mkdir linebbs
> cd linebbs

Pythonインタプリタを実行し、仮想環境を作ります。
Pythonのショートオプションmvenvを指定すると仮想環境用ツールが使えます。
その引数に同様にvenvと指定して、仮想環境venvを作ります。

> python -m venv venv
> dir
venv

仮想環境をアクティベートします。
アクティベートはコマンドプロンプトで行ってください。Powershellだとエラーになります。

> venv\Scripts\activate
(venv) >

Djangoをインストール

仮想環境をアクティベートしたら、仮想環境内のPipを使ってDjangoをインストールします。

> pip install Django==3.1.1
> pip freeze
asgiref==3.2.10
Django==3.1.1
pytz==2020.1
sqlparse==0.3.1

ちなみにDjangoのアンインストールは↓のコマンドで実行できます。
依存関係のあるファイルを削除するか聞かれるので、「y」と入力するとアンインストールが開始されます。

> pip uninstall Django

Djangoをインストールしたら仮想環境内でdjango-adminコマンドが使えるようになります。

> django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).

django-adminには色々なサブコマンドがありますが、これらはすべては使いません。使うのは一部です。

プロジェクトを作成する

Djangoには「プロジェクト」という概念があります。アプリを開発するわけですが、実際のアプリはこの「プロジェクト」内に作成していきます。
アプリは複数作成可能なので「1プロジェクト複数アプリ」がDjangoでは基本となっています。

プロジェクトを作成するにはdjango-adminのサブコマンドstartprojectを実行します。
この時、startprojectの引数にプロジェクト名を指定します。
プロジェクト名とは、今回作る掲示板アプリの開発コードのことです。
開発コードとは半角英数字で記述された、開発時に使用するプロジェクトの名前のことです。

今回はプロジェクト名は「linebbs」と指定します。
django-admin startproject linebbsを仮想環境がアクティベートされたコマンドプロンプトから実行すると、作業ディレクトリ内にlinebbsというディレクトリが作成されます。
これはDjangoが自動で作成したプロジェクトのひな型です。実際の開発ではこのひな型に手を加えてプロジェクトを大きくしていきます。

> django-admin startproject linebbs
> dir
linebbs
venv

プロジェクトを作成したらプロジェクト内に移動します。

> cd linebbs

作業ディレクトリがlinebbsで、プロジェクトもlinebbsになっているので紛らわしいですね。

ほんまやで

自分で言ってたら世話ないわ

プロジェクト内を一望する

プロジェクトのディレクトリに移動したら中身を観察してください。
↓のような構造になっていると思います。

> dir
linebbs
manage.py

linebbsディレクトリはプロジェクト用のディレクトリです。
アプリはこのディレクトリを起点に動作します。
manage.pyというのはプロジェクトに変更を加えたり、状態を確認したりするための便利ツール的なスクリプトです。
開発ではこのmanage.pyをとてもよく使います。これはPythonのスクリプトなので実際に実行してみてください。
↓のような出力になると思います。

> python manage.py

Type 'manage.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

[auth]
    changepassword
    createsuperuser

[contenttypes]
    remove_stale_contenttypes

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

[sessions]
    clearsessions

[staticfiles]
    collectstatic
    findstatic
    runserver

manage.pyにはさまざまなサブコマンドがあります。これらはプロジェクトの開発や運用を助けるためのものです。
たとえば管理メニューのスーパーユーザーを作成するcreatesuperuserコマンドや、モデルからマイグレーションファイルを作成するmakemigrationsコマンド、他にもいろいろあります。
実際はここにリストされているコマンドをぜんぶ使うというようなことはありません。使うのはごく一部です。

おわりに

今回はここまでです。
次回から実際にプロジェクトにアプリを作成していきたいと思います。

動画