djangoでGETかPOSTを判定して値を受け取る

2022年5月3日

djangoでGETかPOSTを判定して値を受け取る

djangoでGETリクエストかPOSTリクエストか判定します。
POSTリクエストだった場合テキストボックスから値を受け取りブラウザに返してあげます。

まずは挙動を見てみましょう。
ブラウザに「http://127.0.0.1:8001/app/get_or_post/」を入力します
この場合は「GETリクエスト」なので「RQUEST_IS:GET」と表示されているます。

次にテキストボックスに「TEST」と入力し「送信する」を押下します。
ここでのmethodは「post」を指定しています。

「REQUEST_IS:POST」「KEY_WORD_IS:TEST」が表示されました。

プログラム

urls.pyは下の通りです。


from django.urls import path
from . import views
app_name = 'app'
urlpatterns = [
        path('get_or_post/', views.get_or_post, name='get_or_post'),
]

views.pyは下の通りです。
注目するのは「if request.method == "POST":」の部分です。
これでリクエストが「POST」であるかどうかを判定しています。


from django.shortcuts import render
from django.views import View
def get_or_post(request):
    if request.method == "POST":
        key_word = request.POST['key_word']
        context = {
            'message': 'POST',
            'key_word': key_word,
        }
    else:
        context = {
            'message': 'GET',
        }
    return render(request, 'app/get_or_post.html', context)

get_or_post.htmlは下の通りです。


{% extends 'app/base.html' %}
{% block content %}
    <table>
        <tr>
            <td>REQUEST_IS:</td>
            <td>{{ message }}</td>
        </tr>
            <td>KEY_WORD_IS:</td>
            <td>{{ key_word }}</td>
        <tr>
            <td>
                <form action="." method="post">{% csrf_token %}
                <input type='text' id="key_word" name="key_word">
            </td>
            <td>
                <input type="submit" value="送信する">
                </form>
            </td>
        </tr>
    </table>
{% endblock %}

2022年5月3日