こんにちは、コウキです。
僕は、Webフレームワークを使うのはDjangoが初めてです。
Djangoの勉強は以前から始めていましたが、せっかくなので、備忘録としてまとめていきたいと思います。
今回はDjangoのインストールから、ブラウザで"Hello world"を表示するまでを解説します。
僕と同じようにDjango初心者の人の参考になれば幸いです。
開発環境
- Python 3.7
- IDEはPyCharm (無料版)
PyCharmでプロジェクトの作成
まず、PyCharmでプロジェクトを作成します。
プロジェクト名はmysiteにします。
PyCharmのプロジェクト作成時にvenvも作っておきます。
PyCharmだとVirtualenvを選択すると勝手に作ってくれるので便利ですね。
作成後はこのような画面になっています。
Djangoのインストール
Djangoをインストールしないことには始まらないので、pipでインストールします。
PyCharmのTerminalでは、すでにvenvに入っているので、そのままコマンドを入力します。
$ pip3 install Django
今回はDjango2.2.4がインストールされました。
Djangoのプロジェクト作成
次にDjangoのコマンドを使用して、Djangoのプロジェクトを作成します。
$ django-admin startproject config .
ここで作成されるものは、設定ファイルのようなものなので、ディレクトリ名はconfigにします。
すでにプロジェクトのフォルダは作ってあるので、作成場所はカレントディレクトリにしています。
コマンドを実行したあとは、以下のようなフォルダ構成になると思います。
$ tree -I venv
.
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
configがプロジェクトの設定ファイルです。
この中でよく使うものは、"settings.py", "urls.py", "manage.py"です。
ここで一度Djangoを動かしてみます。
サーバーを動かすには"manage.py"の"runserver"というコマンドを実行します。
python3 manage.py runserver
コマンドを実行したら、ブラウザで"127.0.0.1:8000"にアクセルしてみましょう。
以下の画面が表示されたら成功です。
このコマンドは開発用のものなので本番用には使えませんが、手軽に動作確認ができます。
サーバーを停止するには"Ctrl + C"を押します。
ちなみにですが、PyCharm右上にある"Edit Configurations..."をクリックして、以下の画像のように設定すると、実行ボタンを押すだけで、サーバーを起動できます。さらに、デバッグボタンを押すとデバッグモードで起動する事もできます。
"Script path"は自分の"manage.py"が入っているパスに書き換えてください。
アプリケーションの追加
プロジェクトにアプリを追加していきます。
Djangoでは機能ごとにアプリを分けて作るみたいです。
アプリを追加するには"manage.py"の"startapp"というコマンドを使います。
アプリの名前はapp1としておきます。
$ python3 manage.py startapp app1
これで、app1というディレクトリが作成されました。
.
├── app1
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
次に、Djangoにapp1というアプリを追加したことを知らせます。
これには"settings.py"の"INSTALLED_APPS"に"app1"を追加します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
]
templateファイルの作成
ブラウザに表示される見た目の部分を作成します。
まずは、"app1"の中に"templates"というディレクトリを作成し、その中にさらに"app1"というディレクトリを作成します。
"app1/templates/app1"の中に"hello_world.html"というファイルを作成し、中身を以下のものにします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<p>{{ message }}</p>
</body>
</html>
titleとmessageは変数でviewから受け取ります。
今回は、app1の中に”templates”を作成しましたが、ベースディレクトリ直下に配置した方が都合が良いようです。
こちらの記事にまとめているので、参考にしてみてください。
【Django】templatesディレクトリをベースディレクトリ直下に変更する方法
viewの作成
ブラウザからリクエストを受け取って、レスポンスを返す部分を作成します。
まず、"app1/views.py"を開きます。
そして、中身を以下のように書き換えます。
from django.shortcuts import render
from django.views import View
class HelloView(View):
def get(self, request):
context = {
'title': '初めてのDjango',
'message': 'Hello World',
}
return render(request, 'app1/hello_world.html', context)
hello_view = HelloView.as_view()
Viewクラスを継承したHellowViewクラスを作成し、getメソッドを定義しています。
ちなみに、POSTリクエストの場合はpostメソッドを定義します。
クラスを作成したら、as_view関数でビュー関数化します。
urlの設定
リクエストされたurlによって、どのview関数を呼ぶかを定義する部分を作成します。
まずは、"config/urls.py"を以下のように変更します。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/', include('app1.urls'))
]
ここでは、app1の"urls.py"を読み込むように設定しています。
続いて、app1の"urls.py"を記述していきますが、最初は入っていないため、"app1"の中に"urls.py"というファイルを作成します。
"app1/urls.py"の中身は以下のようにします。
from django.urls import path
from . import views
app_name = 'app1'
urlpatterns = [
path('hello_world/', views.hello_view, name='hello')
]
これで、"app1/hello_world/"にアクセスしたときに"hello_view"を返すようになりました。
ちなみに、app_nameや、pathの引数のnameはurlの逆引きに使いますが、今回は特に関係ありません。
ブラウザで"Hello World"を表示する
ここまでで、ブラウザに"Hello world"を表示する準備ができました。
runserverを実行してブラウザで、
http://127.0.0.1:8000/app1/hello_world/
にアクセスすると、"Hello world"と表示されます。
最後に
今回は、Djangoを使ってブラウザで"Hello world"を表示するまでやりました。
内容としては、基礎の基礎なので、まだ本格的なアプリを作成することはできませんが、Webアプリ作成の第一歩にはなったと思います。
次は、もっとDjangoの機能を深堀りして、より本格的なアプリを作成できるようにしたいと思います。
コメント