Django で Hello World(初心者)
はじめに
Python をちょっとだけ触ってみたく、最も人気である Django というフレームワークを用いてブラウザに Hello World
と表示させるまでやってみたので、その備忘録を投稿いたします。
今回こちらの記事を参考にさせていただきました。
Djangoで初めてのHello World
前提として python と pip はインストール済みとします。
django コマンドのインストール
pip install django
と実行して、 django コマンドをインストールします。
$ python --version
Python 3.8.2
$ pip install django
# (省略)
$ python -m django --version
3.1
Django プロジェクトの作成
今回は helloWorldProject
という名前のプロジェクトを作成してみた例になります。
django-admin startproject [プロジェクト名] [作成するディレクトリ先]
とコマンドを実行することでプロジェクトが作成できます。
$ django-admin startproject helloWorldProject .
$ tree
.
├── helloWorldProject
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
アプリケーションの追加
このままだと何もない状態なので、ドメイン/hello
とブラウザでアクセスしたときに起動するようなアプリケーションを追加してみます。
今回は hello
という名前のアプリケーションを追加します。
python manage.py startapp [アプリケーション名]
というコマンドを実行することでアプリケーションを追加できます。
$ python manage.py startapp hello
$ tree
.
├── hello
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── helloWorldProject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ └── settings.cpython-38.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
settings.py への追記
このままだと、hello
アプリケーションは適用されていないので設定を追記します。
helloWorldProject/settings.py
に hello
というアプリケーションがあることを追記します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 追加
'hello',
]
ルーティング設定
helloWorldProject/urls.py
でルーティング設定を行います。
from django.contrib import admin
from django.urls import path, include # include 追加
urlpatterns = [
path('admin/', admin.site.urls),
# 追加
path('', include('hello.urls')),
]
ここに path('hello',
と書くのもありですが、今回は、hello/urls.py
というファイルを作成して、ドメイン/hello
とリクエストされた場合のルーティングについては hello/urls.py
に丸投げします。
そうした理由はなるべく高凝集で低結合なプログラムを目指すためです。
さらに hello/urls.py
を新規に作成して、ドメイン/hello
とアクセスされた場合 hello/views.py
の index()関数を呼び出すように設定します。
from django.urls import path
from . import views
urlpatterns = [
path('hello', views.index),
]
view の設定
hello/urls.py
で設定したように hello/views.py
に index()関数
を作成します。
今回は HTTPレスポンスで Hello World
と記述された Content-Type: text/html
のファイルを返却するようにします。
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello World')
マイグレーション
今回はあまり関係ないのですが、ここでいうマイグレーションとはアプリケーションで使うデータベースの定義を自動的に作成・管理する機能のことを指します。
以下のコマンドで実行できます。
$ python manage.py migrate
マイグレーションに成功すればコマンド実行後にエラーが出ないはずです。
ローカルホストでの起動
以下のコマンドでローカルホストに起動することができます。
$ python manage.py runserver
デフォルトではポート8000番で起動するので、 http://localhost:8000/hello
にアクセスして、python:hello/views.py
で記述した Hello World
が表示されてば成功です。
<img width="314" alt="スクリーンショット 2020-08-10 23.08.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259125/3b8bc038-0218-ac0e-ba2e-1d42cea422a1.png">
以上になります。
まとめ
- Django というフレームワークを用いてプロジェクトを作成できるようになった
- Django でアプリケーションを追加できるようになった
- Django でローカルホストでアプリケーションを起動して、動作が確認できるようなった
さいごに
今回作成したプロジェクトはGitHubで公開しました。
このプロジェクトを使用して Dockerfile 記述した記事も投稿しました。
・Django の開発環境の Dockerfile を作成してみた
Discussion