LoginSignup
4
2

More than 3 years have passed since last update.

Django#1(初期設定とhello)

Last updated at Posted at 2019-10-29

Djangoの初期設定

もう出尽くしてる内容ですが、主に自分用にDjangoの初期設定のまとめ
インストールからアプリの作成とHello Worldをとりあえず表示するとこまで記述。

プロジェクトフォルダの作成

名称(new_project)は任意。

$ mkdir new_project
$ cd new_project

python(必要に応じて)

他のpython環境からの影響を排除するため、隔離環境にする。下記はpyenvがインストールされてる前提。
プロジェクトフォルダ(new_project)内にローカルのpythonとパッケージ環境を設定する。

$ pyenv local 3.6.3
$ python -m venv venv
$ source venv/bin/activate

ここから下の手順でうまくいかない場合、原因は十中八九、

$ source venv/bin/activate

を実行し忘れてる。(自戒メモ)

Djangoのインストール

Django本体はpipでインストールする

$ pip install Django==2.1.8

プロジェクトの作成

プロジェクトのフォルダ(new_project)内で下記を実行。
configフォルダ内にurls.py等のファイルが作成される

$ django-admin startproject config .

起動確認

とりあえず起動してホームページが見れることを確認する。
IPアドレスは127.0.0.1や0.0.0.0だとローカルからしか見れないので
リモートから確認する場合はちゃんとしたアドレスを指定する

まずconfig/settings.pyを修正する

$ vi config/settings.py

変更内容

config/settings.py
28c28
< ALLOWED_HOSTS = []
---
> ALLOWED_HOSTS = ['*']

Djangoを起動する

$ python manage.py runserver IPアドレス:8000

ブラウザから上記のアドレス:ポートで下記のような画面が表示されれば起動確認はOK

django_01.jpg

ここで、sqlite3のバージョンでこけた場合は下記手順で更新する。

Amazon Linux 2でSQLite3を最新バージョンにする - Qiita

sudo libtool --finish /usr/lib

adminページの確認

adminページの表示を確認する。
まずはadminユーザーを作成する。ユーザー名とパスワードを任意で設定する。
下記手順中、サービスは起動したままでもOK(自動で再読み込みする)

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py createsuperuser

WEBブラウザからhttp://IPアドレス:8000/admin/を表示する。
下記のような画像が表示されるので、先に作ったadminアカウントでログインする。

django_02.jpg

ログイン後、下記のような画面が表示されればOK

django_03.jpg

アプリの作成

Djangoにおけるアプリとは

Djangoでのアプリとは一つの機能(アカウント管理、工数管理など)を表す。
URL的には第一階層?下記の「アプリ名」に該当する部分に相当する。
http://IPアドレス/アプリ名/

アプリの作成は動作確認までに下記のファイルの編集が必要になる。

  • config/settings.py
  • config/urls.py
  • アプリフォルダ/urls.py
  • アプリフォルダ/views.py

アプリの名前をapp_nameとすると、下記コマンドでアプリのフォルダと主だったファイルが作成される。

 $ python manage.py startapp app_name

INSTALLED_APPSの設定

アプリを作成してもDjangoは自動的に認識しれくれない。
config/setting.pyのINSTALLED_APPSに作成したアプリを追記する必要がある。

config/settings.py
39a40
>     'app_name',

config/urls.pyの設定

アクセスされたURLとそれを処理する関数との対応付けはurls.pyに書く。
大元はconfig/urls.pyで管理するが、includeをimportすることで
各アプリフォルダ内のurl.pyに分散して記述・管理できる。

config/urls.py
17c17
< from django.urls import path
---
> from django.urls import include, path
20a21
>     path('app_name/', include('app_name.urls')),

上記、最終行の「path('app_name/', ~~」の箇所が
URL上のディレクトリ(http://IPアドレス/app_name/)と
それに対応する処理(この場合は「app_nameフォルダのurls.py参照」)を紐づけている。

app_name/urls.pyの設定

次に、アプリ内のurls.pyを設定する。
自動で作成されないので新規で下記のように入力する。

app_name/urls.py
from django.urls import path
from . import views

app_name = 'app_name'

urlpatterns = [
    path('', views.hello, name='hello'),
    # path('func1/', views.func1, name='func1'),
    # path('func2/', views.func2, name='func2'),
]

上記のpath('', views.hello, name='hello')

  • 第1引数の''はURLのapp_name/以下のパスを指定する。
    • この引数に合致するURLへのアクセスに対して、第2引数で指定した関数が処理を行う
  • 第2引数のvies.helloはアクセスに対する処理としてviews.py内のhello関数を実行するという意味
  • 第3引数のname=hello()はこの設定の名前。

同様に(コメントアウトしているが)
app_name/func1/へのアクセスに対してはビュー関数func1
app_name/func2/へのアクセスに対してはビュー関数func2
がそれぞれ処理するという意味になる。

ビュー関数とは「HTTPのGETとかPUTとかに対してレスポンスを返す関数」である。

ビュー関数を書く

先の手順でビュー関数として「hello」と記述したが、
それに該当するhelloという名前の関数を実際にはどこに定義するかというと、
アプリフォルダ内のviews.pyに同一名称の関数として記述する。

requestを受け取って、returnでHTTPを返せばよい。
シンプルな記述としては下記のようになる。

app_name/views.py
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def hello(request):
      return HttpResponse('Hello, World !!')

動作確認

WEBブラウザでhttp://IPアドレス:8000/app_name/にアクセスする。
下記のような文字が表示されればOK

django_04.jpg

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2