【django】 requestてなに?

スポンサーリンク
Django

Djangoの関数ビューやrender()で使うrequest
このrequestを何気なく使いますが
このrequestってなに?と思ったので調べてみました。

こんな感じに手軽にrequestを使っていますが
このrequestってなんでしょう?

def sample(request):
    if request.method == 'POST':
        do_something()
    elif request.method == 'POST':
        do_something_else()
    return render(request, 'sample.html')

requestとは

このrequestは簡単に言えば
HttpRequestオブジェクトのことです。

HttpRequestオブジェクトはDjango内で
システムを通じてステータスを渡すものになります。

あるページがリクエストされた時に
Djangoはリクエスにに関するデータを含んだ
HttpRequestオブジェクトを作ります。

するとDjangoはHttpRequestオブジェクトを
最初の関数として渡し、読み込みを行い
HttpResponseオブジェクトを返します。

requestの中身は?

HttpRequestオブジェクトは複数の属性を持っています。
一例として以下に並べます。

HttpRequest.scheme

リクエストのスキーム(httpかhttpsか)を表す文字列です

HttpRequest.body

データを送る際にバイト列でリクエストボディとして送信される。

HttpRequest.path

スキーマやドメインを含まないページのフルパスを表す文字列

HttpRequest.path_info

pathと同様ページのフルパスを表す文字列。
pathと異なる部分は、テストサーバとデプロイサーバ間の移動で問題が起こりにくいコードになります。

たとえば、アプリケーションの WSGIScriptAlias が”/minfo” に設定されている場合
path が “/minfo/music/bands/the_beatles/” である
一方、path_info は “/music/bands/the_beatles/” となる可能性があります。

HttpRequest.method

リクエストで使用するHTTPメソッドを表す文字列。
POSTやGETなど、使用頻度は高い。

HttpRequest.encoding

送信データのデコードに使用されるエンコードを表す文字列

HttpRequest.content_type

リクエストの MIME タイプを表す文字列です。

HttpRequest.content_params

CONTENT_TYPE ヘッダに含まれる、キーと値のパラーメータのディクショナリです。

HttpRequest.COOKIES

すべてのクッキーが格納されたディクショナリです。キーと値は文字列です。

HttpRequest.FILES

アップロードされたすべてのファイルを含む辞書のようなオブジェクトです。

HttpRequest.META

利用できるすべての HTTP ヘッダーが格納されたディクショナリですが、複数あるので割愛します。

HttpRequest.headers

リクエストの全てのHTTPヘッダーへアクセスを提供する辞書のようなオブジェクト。

HttpRequest.resolver_match

解読されたURLを表すResolverMatchのインスタンス。

requestの使用時の注意事項

結構多くの属性がHttpRequestオブジェクトに入っています。
これらを呼び出すときは
request.method“として
HttpRequestではなく”request”を頭につけて呼び出します。

参考URLは”https://docs.djangoproject.com/en/3.2/ref/request-response/

最後に

djangoをより学びたい場合の関連記事です。
djangoをレベル別で書籍を使用し、順序よく学びたい方におすすめの本を紹介している記事です。

djangoを初めて学ぶ初学の方から、基礎を学び終えた初級の方、アプリを作った・作っている中級の方の3種のレベルに分けておすすめの本を紹介しています。

また、動画で学びたい方はこちらの記事をおすすめします。
djangoをこれから学ぶ方から、アプリ開発したいけどやり方がわからない!って方におすすめです。
Udemyでおすすめな厳選django動画教材を紹介します。

タイトルとURLをコピーしました