LoginSignup
0
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-08-08

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

前回の
djangoの基礎忘備録その1(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されたものをどのように受け取るのかを行いたいと思います。
まずはログインに使われる名前とアドレスを受け取りたいと思います。
その為にまずはログイン画面を作成します。

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>

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

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>

そして入力に誤りがある場合の画面も作ります。

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

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

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を編集します。

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')

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

スクリーンショット 2019-08-07 18.06.53.png

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

スクリーンショット 2019-08-07 18.13.50.png
うまく受け取れてますね。

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

スクリーンショット 2019-08-07 18.39.03.png

OKですね!!!

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

0
1
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
0
1