ユーニックス総合研究所

  • home
  • archives
  • python-django-linebbs-create-project

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

  • 作成日: 2020-10-14
  • 更新日: 2023-12-24
  • カテゴリ: Django

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コマンド、他にもいろいろあります。
実際はここにリストされているコマンドをぜんぶ使うというようなことはありません。使うのはごく一部です。

おわりに

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