Djangoを勉強し始めて2ヶ月目の駆け出しエンジニアです。
初めての投稿なので、Djangoでブラウザに「Hello World」を出力するまでを記録していきます。
##環境
- Macで開発
- Python 3.7.5
- Django 2.2.6
##Djangoをインストール
pip install django==2.2.6
まずは上記のコマンドで Django をインストールします。今回は Django 2.2.6 を使用しますので django の後ろに ==2.2.6 をつけてバージョンを指定します。
念のために、実際にインストールされているかを下記のコマンドで確認してください。
$ python -m django --version
2.2.6
##プロジェクトを作成
インストールができましたら、次はプロジェクトを作成します。
まず、下記のコマンドで myapp というディレクトリーを作成します。
$ mkdir myapp
その後、
$ cd myapp
上記のコマンドで myapp ディレクトリーに移動し、下のコマンドを実行してプロジェクトを作成します。
$ django-admin startproject conf .
conf というプロジェクトが作成されたか次のコマンドで確認してください。
$ ls
conf manage.py
conf と mange.py が作成されていればオッケーです。
全体のディレクトリー構成図は以下のようになっているはずです。
myapp
|
├── manage.py
|
└── conf
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
##アプリケーションを作成
Djangoでは、プロジェクトの中で、複数のアプリケーションを作成できます。
今回は、helloというアプリケーションを作成します。
$ python manage.py startapp hello
以下のディレクトリー構成図になっているはずです。
myapp
|
├── manage.py
|
├── conf
| ├── __init__.py
| ├── settings.py
| ├── urls.py
| └── wsgi.py
|
└── hello
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
このままだと、hello
アプリケーションは適用されていないので、conf
のsettings.py
にhello
アプリケーションが追加されたことを教えるための設定を行なう必要があります。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'hello',
]
INSTALLED_APPS
に'hello'
を追加すると認識され適用されます。
新しいアプリケーションを作成するたびに上記のように追加していく必要があります。
##URLの設定
次に、URLの設定を行います。conf
のurl.py
だけにurlパターンを追加してもいいのですが、設定が大きくなるにつれ管理が大変になるのでアプリケーションごとに分けて設定するのがベストプラクティスです。
conf
のurl.py
を以下のように編集します。
from django.contrib import admin
from django.urls import path, include ⇦ includeをインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('hello.urls')), ⇦ 追加
]
まず、include
をインポートし、urlpatterns
の中にpath('', include('hello.urls.py')),
を追加。
これはinclude関数を用いて、hello
アプリケーションのurls.py
を読み込んでいます。こうすることで、hello
アプリケーションのurls.py
を編集することだけに集中できます。
次に、hello
アプリケーションにurls.py
というファイルを作成します。アプリケーション側のurls.py
は、startapp
では作成されないので、任意で作成する必要があります。
hello
アプリケーションにurls.py
を作成したら、以下のように編集してください。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
from . import view
は同じ階層からviews.py
をインポートしています。
path('', views.index),
は第一引数にurlのパスの指定をし(今回はからにしています。)、第二引数にurlパターンにマッチするview関数を指定します(次のステップでview関数を作成していきます)。第三引数には,urlの逆引き用でname='名前を指定'
のように書きます。ですが
、今回は必要ないので省略しています。記入していません。
##View関数の作成
さて、いよいよ最後の作業です。
view.py
を以下のように編集してください。
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello World')
まず、 HttpResponse
をインポートします。
次に、先ほどhello
アプリケーションのurls.py
にpath('', views.index),
を作成したのですが、第二引数にあるindexが今回使われる関数になりますのでdef index(requset)
となっています。
HttpResponse('Hello World')
は()の中の、レスポンスとして返したい値を入れ、HttpResponseオブジェクトとして返します。
それでは、python manage.py runserver
を実行してください。以下の表示が出ればオッケーです。
February 01, 2020 - 05:59:05
Django version 2.2.6, using settings 'conf.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
ブラウザでhttp://127.0.0.1:8000
を開きます。
このように表示されていれば成功です。おめでとうございます!!!!
##一言
Hello Worldを表示させることができたらエンジニアへの大きな一歩を踏んだも同然です。難しいと感じるかもしれませんが、継続的に学べばいずれ楽しさがわかってくると思います。
私も2ヶ月目でまだまだ駆け出しですがどんどん発信していきたいと思います。