LoginSignup
2
3

More than 3 years have passed since last update.

DjangoでHello world (初学者がどこまで理解できるか(1))

Last updated at Posted at 2019-10-12

Djangoで"Hello world"までやってみよう

Djangoのインストールは実施済として記載していきます。
HTML, CSS, Javascriptとの連携までやっていきます。その第1回目。
参考:https://docs.djangoproject.com/ja/2.2/intro/tutorial01/

Djangoが使用できる環境を用意

$ django-admin startproject practice
$ cd practice ; tree ./
.
├── manage.py
└── practice
    ├── __init__.py
    ├── settings.py
    ├── urls.py
$ mv practice/ config/

practiceという、Djangoが使用できる環境(フォルダ)を作りました。
その配下には、manage.pyファイルと、practiceフォルダがあります。
practiceフォルダが2つあるとややこしいので、配下のフォルダを変更します。
(practiceフォルダをconfigに)

manage.py:Djangoで実行する際に使用するコマンド(スクリプト)です。

configフォルダ配下には、以下4つのファイルが自動で作成されます。
__init__.py:pythonのパッケージだよと、教える空っぽのファイル。
settings.py:設定を管理するファイル。
urls.py:作ったアプリケーションの、URLへのパスを管理するファイル。
wsgi.py:webサーバーとの接続口
 *WSGI = Web Server Gateway Interfaceの略

#### practice/manage.py
****
def main():
#第二引数を'config.settings'に変更
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
****
#### practice/config/wsgi.py
****
def main():
#第二引数を'config.settings'に変更
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
****
#### practice/config/settings.py
****
def main():
#'config.urls'に変更
    ROOT_URLCONF = 'config.urls'
****
#'config.wsgi.application'に変更
    WSGI_APPLICATION = 'config.wsgi.application'
****

アプリケーションを作る

$ python manage.py startapp myapplication
$ tree ./myapplication/
myapplication/
├── __init__.py
├── admin.py
├── apps.py
├── migrations
   └── __init__.py
├── models.py
├── tests.py
└── views.py

admin.py:「ブラウザで編集できる管理ページ」、に関するファイル。
apps.py:アプリケーションとDjango環境の接続口。
models.py:アプリケーションとデータベースの接続口。
tests.py:テストを書く場所。
views.py:ビュー(画面への出力)への挙動。

アプリケーションのビューを設定

#### practice/myapplication/views.py
from django.http import HttpResponse

#index関数にHTTPリクエストがあったら、"Hello, world."のHTTPレスポンスを返す
def index(request):
    return HttpResponse("Hello, world.")

アプリケーションのURLをDjango環境に設定

#アプリケーションのフォルダに、"urls.py"を作成
$ touch ./myapplication/urls.py ; cd ./myapplication ; tree
.
├── __init__.py
├── admin.py
├── apps.py
├── migrations
   └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
#### practice/myapplication/urls.py

#path関数を呼び出し
from django.urls import path
from . import views

#URLに、「myapplication/」の後に何も指定しなければ、views.pyに記載の、index関数が呼び出される
#このURLパターンには、indexという名前をつける
urlpatterns = [
    path('', views.index, name='index'),
]
#### practice/config/urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
#URLで、myapplication/へのアクセス依頼があれば、myapplication/のurls.pyを呼び出す
    path('myapplication/', include('myapplication.urls')),
    path('admin/', admin.site.urls),
]

これにより、URLで「http://****/apps/」アクセスがあれば、
practice/config/urls.py -> practice/myapplication/urls.py ->
practice/myapplication/views.pyの順で、HTTPリクエストが届く仕組みができた。

さいごに

#### practice/
$ python manage.py runserver

*****
*****
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

開発環境用サーバーを起動させ、ブラウザでhttp://127.0.0.1:8000/myapplicationを検索。
"Hello, world."と表記があればOKです。

2
3
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
2
3