Pythonのフレームワーク「Django」のチュートリアルを実施(step by stepで少しずつ更新)

2020/09/24Python

初期画面

Djangoのインストール

仮想環境

プロジェクトフォルダを作成します。

mkdir djangogirls
プロジェクトフォルダ作成

作成したプロジェクトフォルダに移動します。

cd djangogirls
プロジェクトフォルダに移動

仮想環境を作成します。

仮想環境(virtual environment)ではプロジェクト単位であなたのPython/Djangoのセットアップを他から隔離します。 これは、あなたがひとつのウェブサイトにおこなったどんな変更も、あなたが開発している他のサイトに影響を及ぼさないということです。

https://tutorial.djangogirls.org/ja/django_installation/
python -m venv myvenv
仮想環境の作成

仮想環境の操作

仮想環境を起動します。

myvenv\Scripts\activate
仮想環境の起動

Djangoのインストール

まずはpipを最新バージョンに更新します。

python -m pip install --upgrade pip
pipの更新

requirements.txtを作成します。requirements.txtは pip install でインストールする依存関係の一覧が記載されているファイルです。

requirements.txtファイルの作成

いよいよDjangoをインストールします。

python -m pip install -r requirements.txt
Djangoのインストール

プロジェクト作成

django-admin.exe startproject mysite .
プロジェクト作成

設定変更

タイムゾーンを変更します。

TIME_ZONE = 'Asia/Tokyo'

デフォルトでは英語ですが、日本語に変更したい場合は LANGUAGE_CODE を変更します。

LANGUAGE_CODE = 'ja'
言語・タイムゾーン変更

静的ファイルのパスを設定します。

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
静的ファイルのパス設定

接続先を設定します。デフォルトでは何も記載されていません。この状態ですと、 localhost127.0.0.1[::1] のホストをチェックするようになっています。今回のチュートリアルで使用するのは .pythonanywhere.com ですので ALLOWED_HOSTS に設定します。

ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']
ホストの設定

データベースのセットアップ

データベースの種類を設定します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
データベースの設定
python manage.py migrate
データベース作成

ウェブサーバ起動

manage.pyがあるフォルダに移動します。

ウェブサーバ起動フォルダ
python manage.py runserver
起動エラー
python : Watching for file changes with StatReloader
At line:1 char:1
+ python manage.py runserver
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Watching for fi...th StatReloader:String 
   ) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

このエラーはWindows PowerShell ISEを使っていることが原因の可能性があります。Windows PowerShellに切り替えて再度実行します。

ウェブサーバ起動

ブラウザで http://127.0.0.1:8000/ を表示します。

起動確認

Djangoモデル

新しいアプリケーション作成

Djangoのモデルを理解するために新しいアプリケーションを作ります。

python manage.py startapp blog

追加したアプリケーションをDjangoが認識させます。

ブログポストモデル作成

from django.conf import settings
from django.db import models
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

データベースにテーブル作成

モデルに変更があったことをDjangoに知らせます。以下のコマンドを実行するとDjangoが移行ファイルを作成してくれます。

python manage.py makemigrations blog

移行ファイルをデータベースに追加します。

python manage.py migrate blog

ログインページ作成

models.pyに追加したポストクラスをWebページで追加、編集、削除するためにDjango adminを使います。

from django.contrib import admin

from .models import Post

admin.site.register(Post)

Webサーバを実行して( python manage.py runserver )、http://127.0.0.1:8000/admin/にアクセスします。

この管理画面にログインできるユーザを作成します。

入力したユーザー名とパスワードを入力してログインボタンをクリックします。

ログインすると以下のような管理サイトが憑依されます。

ここでPostsの横にある「追加」リンクをクリックして実際の記事をいくつか投稿します。

参考

Django Girls のチュートリアル
https://tutorial.djangogirls.org/ja/