Djangoとは?
DjangoはPythonで書かれた高水準なWebフレームワークで、迅速な開発とクリーンで実用的なデザインを特徴としています。
インストール
pip install django
cd myblog
python manage.py startapp blog
アプリケーションの設定
myblog/settings.pyを開き、INSTALLED_APPSリストにblogを追加します。
INSTALLED_APPS = [
...
'blog',
]
モデルの作成
blog/models.pyに、ブログ記事を表すPostモデルを定義します。
from django.db import models
from django.utils import timezone
class Post(models.Model):
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
マイグレーションの作成と適用
モデルをデータベースに反映させるためにマイグレーションを作成し、適用します。
python manage.py makemigrations
python manage.py migrate
管理画面の設定
from django.contrib import admin
from .models import Post
admin.site.register(Post)
ビューとテンプレートの作成
blog/views.pyに、ブログ記事のリストを表示するビューを作成します。
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})
blog/templates/blog/post_list.htmlというファイルを作成し、以下のHTMLコードを追加します。
<!DOCTYPE html>
<html>
<head>
<title>Blog</title>
</head>
<body>
<h1>Blog Posts</h1>
<ul>
{% for post in posts %}
<li>
<h2>{{ post.title }}</h2>
<p>{{ post.text }}</p>
<p><em>Published on {{ post.published_date }}</em></p>
</li>
{% endfor %}
</ul>
</body>
</html>
blog/urls.pyを作成し、ビューをURLにマッピングします。
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
myblog/urls.pyにblogのURL設定を含めます。
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
サーバーの起動と確認
すべての設定が完了したら、開発用サーバーを起動して、ブラウザでアプリケーションを確認します。
python manage.py runserver
ブラウザでhttp://127.0.0.1:8000/
にアクセスすると、ブログ記事が表示されます。
myblog/
├── blog/
│ ├── migrations/
│ │ └── __init__.py
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── myblog/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── blog/
└── templates/
└── blog/
└── post_list.html
myblog/
:プロジェクトのルートディレクトリ
blog/
:アプリケーションディレクトリ
migrations/
:データベースマイグレーションファイルを含むディレクトリ
__init__.py
:このディレクトリがPythonパッケージであることを示すファイル
admin.py
:Django管理画面にモデルを登録するためのファイル
apps.py
:アプリケーション設定を含むファイル
models.py
:データベースモデルを定義するファイル
tests.py
:アプリケーションのテストを書くためのファイル
urls.py
:アプリケーションのURLルーティングを定義するファイル
views.py
:ビュー関数を定義するファイル
myblog/
:プロジェクト設定ディレクトリ
__init__.py
:このディレクトリがPythonパッケージであることを示すファイル
asgi.py
:ASGI設定ファイル(非同期サーバーゲートウェイインターフェース)
settings.py
:プロジェクトの設定ファイル
urls.py
:プロジェクトのURLルーティングを定義するファイル
wsgi.py
:WSGI設定ファイル(Webサーバーゲートウェイインターフェース)
manage.py
:Django管理コマンドを実行するためのスクリプト
blog/templates/blog/post_list.html
:ブログアプリのテンプレートファイル
まとめ
DjangoはPythonで作られた高水準なWebフレームワークで、迅速な開発を支援します。
インストール後、プロジェクトとアプリを作成し、モデルやビューを定義してデータベースと連携させます。
アプリケーションの設定やテンプレート作成後、サーバーを起動して動作を確認できます。