ホーム >  Python > Django >  DjangoのビューとHttpRequestオブジェクト


Posted:2017/10/30 9:00:16 AM|Category : Django

DjangoのビューとHttpRequestオブジェクト

Django1.11.3環境でビューを仕様します。

ビュー

Webブラウザのクライアントからのリクエストを受け取ります。最終的に、クライアントへレスポンスを返します。Djangoでは、関数やクラスを利用してビューを作成します。

HttpRequestオブジェクト

def hello(request):

def post(request, post_id):

Webブラウザなどのクライアントから送信されてくるデータ(Get、Post、リクエストヘッダー、クッキー)などは、ビュー関数の第一引数のHttpRequestオブジェクト(ここではrequest)から取得できます。

HttpRequestオブジェクトには、GET、POST、COOKIESなどのフィールドを持っています。

環境

OS CentOS 7.1.1503
pyenv 1.1.3-5-g7dae197
Anaconda 3-4.3.0
MariaDB 5.5.52-1.el7
Apache 2.4.6
mod_wsgi 4.5.14
Django 1.11.3

ビュー関数の記述例

from django.shortcuts import render
from django.http import HttpResponse

def hello(request):
    return HttpResponse('Hello World')

def post(request, post_id):
    return HttpResponse('post_idは={0}です'.format(post_id))

ビュー関数

def hello(request):

def post(request, post_id):
第一引数

HttpRequestオブジェクトを受け取ります。

第二引数

ルーティングの正規表現(urls.py)で取得した値が渡されます。

ヘッダー情報を表示する

①以下のようなDjangoアプリ構成を作ります。プロジェクト名が「pj1」で、アプリケーション名が「item」です。プロジェクトの設定は済ませたものとします。

  • pj1/
  • pj1/
  • __init__.py
  • settings.py
  • urls.py
  • wsgi.py
  • item/
  • __init__.py
  • admin.py
  • apps.py
  • migrations/
  • __init__.py
  • models.py
  • views.py
  • manage.py

②itemディレクトリ配下のurls.pyを編集します。

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^hello/', views.hello, name='hello'),
]

②itemディレクトリ配下のviews.pyを編集します。

from django.shortcuts import render
from django.http import HttpResponse
from django.template.respon

def hello(request):

    context = {
        'headers': {
            'scheme': request.scheme,
            'path': request.path,
            'method': request.method,
            'http_accept': request.META['HTTP_ACCEPT'],
            'http_accept_language': request.META['HTTP_ACCEPT_LANGUAGE'],
            'user_agent':request.META['HTTP_USER_AGENT'],
            'remote_addr': request.META['REMOTE_ADDR'],
        }
    }

    return TemplateResponse(request, 'item/header.html', context)

hello()関数は、HttpRequestオブジェクトからヘッダー情報を取り出し、辞書に格納します。

③itemディレクトリ配下に「templates/item」ディレクトリを作成します。そこに、header.htmlを作成します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
  <p>HTTPヘッダ情報の表示</p>
  <ul>
    {% for key, val in headers.items %}
    <li> {{ key }} = {{ val }}</li>
    {% endfor %}
  </ul>
  </body>
</html>

④簡易サーバー(apacheへデプロイしている場合は不要)を起動し、以下のURLをブラウザで開きます。

http://ローカルのipアドレス/item/hello/

以下のようなページが表示されます。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 2008年04月 金融機関系I

最近の投稿
人気記事
カテゴリー
広告