はじめに
研究でWEBアプリケーションを作ることになり、何使おうかなと悩んでいた時にちょうど研究で作成していたアプリケーションがPythonだったので、WEBアプリケーションにそのまま組み込めるかなって思いDjangoを選んだ。Pythonベースで作成されいるWEBフレームワークはいくつかあり、その中でもDjangoはいろんな機能が標準で搭載されている。ここでは、Djangoのインストールからプロジェクト・アプリの作成をして、ブラウザでHello worldが表示する所までする。
構築環境
- Windows11 Home 22H2
- Intel Core i5 9400F
- RAM 32GB
- ターミナル:Git Bash
何も考えずにgitの環境構築をしていた時に導入したGit Bash。これが、Linux系OSのコマンドが使えてなかなか便利だったのでWindowsで作業するときはこれ使ってます。
Djangoのインストール
はじめにプロジェクトを作成するフォルダを作成する。
作成したらGit Bashを起動して作成したフォルダまで移動する。
環境を汚さずに済むため、Pythonの仮想環境を作成する。
$ python3 -m venv venv
$ source ./venv/Scripts/activate
(venv)
$
仮想環境を作成するコマンドを実行するとvenvフォルダが生成されるため、sourceコマンドで使用する環境を指定することでこの仮想環境内で実行される。これからDjangoを実行したり、使いたいPythonのライブラリをダウンロードするときはsourceコマンドで環境指定した状態でする。
では、ここでDjangoのダウンロードをする。
(venv)
$ pip install django
Collecting django
Obtaining dependency information for django from https://files.pythonhosted.org/packages/bf/8b/c38f2354b6093d9ba310a14b43a830fdf776edd60c2e25c7c5f4d23cc243/Django-4.2.5-py3-none-any.whl.metadata
Downloading Django-4.2.5-py3-none-any.whl.metadata (4.1 kB)
Collecting asgiref<4,>=3.6.0 (from django)
Obtaining dependency information for asgiref<4,>=3.6.0 from https://files.pythonhosted.org/packages/9b/80/b9051a4a07ad231558fcd8ffc89232711b4e618c15cb7a392a17384bbeef/asgiref-3.7.2-py3-none-any.whl.metadata
Downloading asgiref-3.7.2-py3-none-any.whl.metadata (9.2 kB)
Collecting sqlparse>=0.3.1 (from django)
Using cached sqlparse-0.4.4-py3-none-any.whl (41 kB)
Collecting tzdata (from django)
Using cached tzdata-2023.3-py2.py3-none-any.whl (341 kB)
Downloading Django-4.2.5-py3-none-any.whl (8.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.0/8.0 MB 10.2 MB/s eta 0:00:00
Using cached asgiref-3.7.2-py3-none-any.whl (24 kB)
Installing collected packages: tzdata, sqlparse, asgiref, django
Successfully installed asgiref-3.7.2 django-4.2.5 sqlparse-0.4.4 tzdata-2023.3
(venv)
$
pipコマンドでインストールすると、こんな感じでインストールが進む。
Djangoのインストールはこれで完了。
プロジェクトの作成
Djangoにはプロジェクトとアプリケーションがある。プロジェクトとはウェブサイトの構成やアプリケーションの管理をするもので、1つのプロジェクトの中に複数のアプリケーションを作成し実装することで1つのWEBアプリケーションを構築していく。アプリケーションだけでは動作することができず、プロジェクトとアプリケーションはセットで作成する必要がある。
(venv)
$ django-admin startproject project
(venv)
$ ls
project/ venv/
django-adminコマンドを使ってプロジェクトを作成する。最後のprojectの部分は任意のプロジェクト名にすることができる。
ここで一度起動ができるかを確認する。以下のコマンドを実行するとWEBサーバが起動してブラウザで表示することができる。
(venv)
$ cd project/
(venv)
$ ls
manage.py* project/
(venv)
$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 28, 2023 - 21:50:29
Django version 4.2.5, using settings 'project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
ブラウザでhttp://0.0.0.0:8000/にアクセスする。するとDjango動作してますよーページが表示される。
templates フォルダの作成
templates
フォルダはhtmlファイルを格納するフォルダ。 ファイルの作成場所はどこでもいいがsettings.py
に場所を書く必要がある。 以下に設定を記述する。
$ cd project
$ ls
db.sqlite3 main/ manage.py* project/
(venv)
$ cd project/
(venv)
$ mkdir templates
(venv)
$ ls
__init__.py __pycache__/ asgi.py settings.py templates/ urls.py wsgi.py
(venv)
$ nano settings.py
~変更箇所~
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, 'project/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
‘DIRS’: [BASE_DIR, ‘project/templates’]のところを編集する。
アプリケーションの作成
アプリケーションを以下のコマンドを使用して作成する。
$ python manage.py startapp main
アプリケーションの名前も任意のものをつけることができ、上記のコマンドではmainにしている。アプリケーションを作成すると指定した名前でフォルダが作成されてその中にいろいろファイルが生成される。
(venv)
$ cd main
(venv)
$ ls
__init__.py admin.py apps.py migrations/ models.py tests.py views.py
アプリケーションの作成はこれで完了。
プロジェクトのurls.pyの設定
プロジェクトとアプリケーションの紐づけをする必要がある。
その設定をプロジェクトのurls.pyでする。
$ nano urls.py
from django.contrib import admin
from django.urls import path,include #追記
urlpatterns = [
path('admin/', admin.site.urls),
path('main/', include('main.urls')), #追記
]
アプリケーションのurls.pyの設定
プロジェクトのurls.py?アプリケーションのurls.py?あっちこっちに同じファイルがあるのでややこしくなりますが間違えないように気を付けてください。
$ cd main
$ nano urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.main, name='main'),
]
HTMLファイルを作成
次にHello Worldを表示するHTMLファイルを作成する。
HTMLファイルは先ほど作成したtemplatesフォルダの中に置く。
$ cd project
$ cd templates
$ nano hello.html
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
</body>
こんな感じで簡単なHTMLファイルを作成。
アプリケーションのviews.py の設定
以下のように記述する。
$ nano views.py
from django.shortcuts import render
# Create your views here.
def main(request):
return render(request, 'hello.html')
動作確認
WEBサーバを起動してブラウザでhttp://127.0.0.1:8000/main/にアクセスする。
(venv)
$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 28, 2023 - 23:13:29
Django version 4.2.5, using settings 'project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[28/Sep/2023 23:13:31] "GET /main/ HTTP/1.1" 200 120 #GETリクエストに応じている
するとブラウザ上ではHello worldと表示されている。
ターミナルを確認するとGETリクエストがきていることが確認できる。
まとめ
初めてDjangoを触ったときはプロジェクトとアプリケーションがごちゃごちゃになってとても大変でした。。。しかし、Djangoはこれからがメインで様々な機能を駆使してWEBアプリケーションを実装していくことができます。僕はこれからいろいろ試していきながらWEBアプリケーションを実装していこうと思ってます~。