Django初学者の自分へ（3） - こんにちわ世界！ -

## **チュートリアル一覧**
| No. | タイトル                                                        |    |
|-----|:---------------------------------------------------------------|---:|
| 1   | [Django初学者の自分へ（1） - プロジェクト・アプリ -](https://qiita.com/Yi-Gaoqiao/items/c5b41d22907016ae1d0f)             |   |
| 2   | [Django初学者の自分へ（2） - MTVとは -](https://qiita.com/Yi-Gaoqiao/items/f375ea362034b8719440)                        |    |
| 3   | **Django初学者の自分へ（3） - こんにちわ世界！ -**                |  ☆  |
| 4   | [Django初学者の自分へ（4） - メモアプリ作成 -](https://qiita.com/Yi-Gaoqiao/items/d87408e173758672ed11)                  |    |

## **前回のおさらい**
[前回](https://qiita.com/Yi-Gaoqiao/items/f375ea362034b8719440)は MTV の仕組みに触れました。
今回からはいよいよコードを書いていきます！

## **レッツジャンゴ -こんにちわ世界！-**
今回はプログラミング学習で避けては通れない道、「こんにちわ世界！（Hello world!）」を Django でやってみます。今回の目標は「こんにちわ世界！」を通じて `urls.py` -- `views.py` の繋がりを理解することです。

## **View の作成**
まず初めに app1 内の `views.py` を開きます。

    myapp/
        manage.py
        myapp/
            __init__.py
            asgi.py
            settings.py
            urls.py
            wsgi.py
        app1/                  
            migrations/
                __init__.py
            __init__.py
            admin.py
            apps.py
            models.py         
            tests.py
            views.py          <-- ここです！

`views.py` 内はデフォルトで以下のようになっていると思います。

    from django.shortcuts import render

    # Create your views here.

ここに「こんにちわ世界！」を表示させるために必要なものをインポートし、 **View** を定義します。

    from django.shortcuts import render
    from django.http import HttpResponse         # 追加

    # Create your views here.

    def hello(request):                          # View の定義
        return HttpResponse('こんにちわ世界！')

HttpResponse は読んで字のごとくでして、（）内を画面に返します。
**View** の準備は以上です。続いて URL を設定します。
## **URL の設定**
プロジェクトにはデフォルトで `urls.py` がありますが、アプリにはありません。ですので自分で作っちゃいます。

    myapp/
        manage.py
        myapp/
            __init__.py
            asgi.py
            settings.py
            urls.py
            wsgi.py
        app1/                  
            migrations/
                __init__.py
            __init__.py
            admin.py
            apps.py
            models.py         
            tests.py
            views.py
            urls.py        <-- 追加

`views` をインポートし、URL と紐づける設定をします。  
`app1/urls.py`

    from django.urls import path
    from . import views

    urlpatterns = [
        path('', views.hello)
    ]

このように URL を定義し、それに応じた処理の振り分けを行うことを **ルーティング** と言います。  
続いて `app1/urls.py` に `myapp/urls.py` を繋げます。  
`myapp/urls.py` 

    from django.contrib import admin
    from django.urls import path, include   # include を追加

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('app1.urls')),     # app1/urls.py に接続
    ]

ここまでで「こんにちわ世界！」の準備は完了です！
それではサーバを起動して `http://127.0.0.1:8000/` にアクセスしましょう！
みなさんいかかでしょうか、ちゃんと「こんにちわ世界！」してますでしょうか。
![hello_world.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641843/54275330-9ad1-4f1d-56fa-fe796ccb035e.png)

勘のいい方は気付かれているかと思いますが、今回は **Model** と **Template** は使用していません。というのも今回のように `views.py` の中でレスポンス（「こんにちわ世界！」）が完結してしまうような場合、**Model** と **Template** は必ずしも必要ではないのです。今回は「こんにちわ世界！」の検証のために **Model** と **Template** は使用しませんでしたが、実際に Webアプリケーションを作成する際には **Model** - **Template** - **View** は必ずと言っていいほど必要になります。**MTV** について不安になったら、その都度[前回の記事]()に立ち返ってみてください。

## **まとめ**
- URL を定義し、リクエストに応じた処理を振り分けることを **ルーティング** と言う。
- アプリ内にはデフォルトで `urls.py` が用意されていないので、自分で作成し、それをプロジェクトの `urls.py` に含ませる。

[次回](https://qiita.com/Yi-Gaoqiao/items/d87408e173758672ed11)はこれまでの集大成として簡単なメモアプリを作成します！