Django 1.4でこれを試してみました.
クラスを使用すると,各URLにGETアクセスがあった場合〜,POSTアクセスがあった場合〜で呼ばれるメソッドが違うので同じ URL で HTTP Method ごとに処理を変えたい場合などに書きやすくなるのではないかと思います.
views.py でクラスベースの Generic View を使用するためには views.pyの中にこのように
# -*- coding: utf-8 -*-
from django.views.generic import View
class Hoge(View):
def get(self, request):
pass
def post(self, request):
pass
class Piyo(View):
def get(self, request):
pass
def post(self, request):
pass
View を継承してクラスを作成します. get や post 以外にも, put や delete などもメソッドを書くだけで動作します.メソッドを用意していない HTTP Method でアクセスした場合には HTTP ステータスコード405, Method Not Allowed を返します.
継承する View は
- View
- TemplateView
- RedirectView
urls.py をこのようにします.
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from アプリのパッケージ.views import *
urlpatterns = patterns(
'アプリのパッケージ.views',
url(r'^hoge$', Hoge.as_view()),
url(r'^piyo$', Piyo.as_view()),
)
http://ドメイン/hoge に対して GET アクセスすると, Hoge クラスの get メソッドが, POST アクセスをすると post メソッド呼ばれます.http://ドメイン/piyo に対してのアクセスは同じことが Piyo クラスに対して行われます.
0 件のコメント:
コメントを投稿