djangoの基礎_忘備録_その2(ユーザーからのPOSTを受け取る)

初めまして**jack**です。
８月からPythonをメインにエンジニア業務に従事することになりまして。
そこでどうせならDjangoも学べば鬼に金棒。具志堅用高にメリケンサックですよね。
今回は表題の通り、**ユーザーからのPOSTを受け取る**事が目標です。
以下、参照したサイトです。
環境構築もこちらを参照すればできると思います。丸投げでごめんなさい。てへぺろこつんこつん

- https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django
- Python3 + Django2.0入門 - Pythonで作るWebアプリケーション開発入門 - その１
-https://www.amazon.co.jp/dp/B07GNJW2QN/ref=cm_sw_em_r_mt_dp_U_sROsDbBXK5S8R

前回の
djangoの基礎_忘備録_その１（DjangoのMTVを使ってローカルサーバーで思いのままにテキストを表記させようぜ
https://qiita.com/jacknightmare13/items/d8911860b9eb2d8c3a32
で下記のディレクトリ構造まで構築できました。

```:djangoAppディレクトリ
├── djangoApp
│   ├── __pycache__ 
│   ├── _init_.py
│   ├── setting.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
├── hoge
│   ├── __pycache__
│   ├── migrations  
│   ├── _init_.py  
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py 
│   └── views.py
├── static
├── templates
└── manage.py
```

今回はユーザーからPOSTされたものをどのように受け取るのかを行いたいと思います。
まずはログインに使われる名前とアドレスを受け取りたいと思います。
その為にまずはログイン画面を作成します。

```html:templates/login.html
<!DOCTYPE html>
<html lang="ja" dir="ltr">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>下記に名前とメールアドレスを入力して送信してください</h1>
    <form action="/login" method="post">
      {% csrf_token %}
      <input type="text" name="username" placeholder="名前">
      <input type="text" name="email" placeholder="メールアドレス">
      <input type="submit" value="送信">
    </form>

  </body>
</html>
```

それから入力された名前とアドレスを確認する為の画面も作りましょう。

```html:templates/check.html
<!DOCTYPE html>
<html lang="ja" dir="ltr">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>POSTの受け取り成功</h1>
    <h2>名前</h2>
    <p>{{username}}</p>
    <h2>メールアドレス</h2>
    <p>{{email}}</p>

  </body>
</html>
```
そして入力に誤りがある場合の画面も作ります。

```html:templates/error.html
<!DOCTYPE html>
<html lang="ja" dir="ltr">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>入力に誤りがあります</h1>
  </body>
</html>
```

そして作成したhtmlにurls.pyでつなげます。

```python:djangoapp/urls.py
from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('hoge/', include('hoge.urls')),
    path('form', views.render_form),
    path('login', views.login),
]
```

最後に表示させるviews.pyを編集します。

```python:djangoapp/views.py
def render_form(request):
    return render(request, 'login.html')

def login(request):
    if request.POST['username'] and request.POST['email']:
        return render(request, 'check.html',
        {"username":request.POST["username"],
        "email":request.POST['email']})
    else:
        return render(request, 'error.html')
```

上記を保存してローカルサーバーをチェックします。

<img width="637" alt="スクリーンショット 2019-08-07 18.06.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274224/487ddc9a-2148-3acd-6752-711e3addb13e.png">

名前とメールのところに正確に入力すると、、、

<img width="462" alt="スクリーンショット 2019-08-07 18.13.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274224/daae18d3-3c1d-0c81-5413-19ad7b0153cd.png">
うまく受け取れてますね。

次はメールのところを空白にしてみましょう


<img width="462" alt="スクリーンショット 2019-08-07 18.39.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274224/04a239eb-8f46-b728-1d03-cefd4f108011.png">

OKですね！！！


それではさよならさよならさよならー