[初めての人用] Django 環境構築　#2 HTMLを表示できる環境を作る

前回から間が空いたが、前回の続きを投稿してみる。

今回は、HTMLを無事に表示する所まで。

前回までの記事

https://qiita.com/souichirou157/items/0ebe37a1016d79062f49


https://qiita.com/souichirou157/items/6fd44126871b45e9b1a0


https://qiita.com/souichirou157/items/c777e66aab14e2339826


<h1>今回使うファイル</h1>

<ul>
プロジェクトフォルダ
<li>settings.py</li>
<li>urls.py</li>

</ul>

<ul>
アプリケーションフォルダ

<li>views.py </li>
<li> urls.py   各自で用意する。</li>
</ul>


<div>
<h2>補足事項</h2>
<ul>
<li>アプリケーションフォルダと書いてある時、 __init__.pyがあるフォルダのことを指している。</li>
<br>

<li>プロジェクトフォルダと書いてある時、 settings.pyがあるフォルダのことを指している。</li>
</ul>

<p>この中に挙げているファイルは前々回で自動生成されるファイルなので、よっぽど何かない限りは動かさない<br>

というか動かす事殆どないはずだから、、。</p>
</div>



というわけで始める。


<h1> templates フォルダをアプリケーションフォルダの下に作る</h1>

```
アプリケーションフォルダ-----    __init__.py 
                           、、、、
                        、、、、、、
                        templates---app---- test.html
```
<p>appフォルダはなくてもおk。</p>


<h1>2.settings.py にテンプレートフォルダを教える</h1>



```
#こんな感じ
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

```


<h6>os.pas.joinメソッドの引数に文字列でフォルダ名を与える事</h6>



<h1> 3. views.pyの記述</h1>

```
#ファイル名は何でも良い

この3つは必ずインポートする
from django.shortcuts import render,redirect　　#--A
from django.template import loader             #--B
from django.http import HttpResponse          #--C



def test(request):
    #表示したいhtmlを値に指定する

　　　#B 表示したいHTMLを指定
    template = loader.get_template('app/test.html')
 

    msg = 'これでもOK';

    
    context = {'message' :'テスト','msg':msg}

            #C                               #B
    return HttpResponse(template.render(context,request))
```

リクエストでurlを指定するとこの関数が実行されると

　レスポンスでhtmlが返ってくる



<h1>4. urls.pyの記述</h1>
こっちはアプリケーションフォルダ側


```
from django.urls import include,path

from .test_views  import test  #ここでビューのurlを指定している

app_name = 'Display'

#右からurl、関数名、　テンプレートに渡す関数のaliasイベント発火の時に必要
urlpatterns = [
           path('test/',test)
}



#http://127.0.0.1:8000/app_nameの文字列/path関数の第一引数文字列
とリクエストする事になる
```

<p>path関数について少し説明</p>
<ul>
<li>第一引き数はurl</li>
<li>第二引き数はviews.pyで記述した関数名</li>
<li>第３引数は簡単に言うと要素に与える名前。今回は使わないので割愛。</li>
</ul>

※関数名に()を付けないようにする事


<h1>5. urls.pyの記述</h1>
こっちはプロジェクト側


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


urlpatterns = [
    path('admin/', admin.site.urls),

    #ここにないとリクエストした時エラーになる
    path('アプリケーションフォルダ名/',include('アプリケーションフォルダ名.urls'))
]

```

htmlを最後に
```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    {% comment %} viewsで指定した値をここに渡す {% endcomment %}
    <h1>{{message}}</h1>
    <h2>{{msg}}</h2>
</body>

</html>

```

実行する



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631088/6127b4ab-0836-4c15-b8fc-1d5e6726fdc5.png)

こういう事よ!!!