我想要一种以集中方式自动将GET和POST请求路由到后续方法的方法。 我想以下列方式创建我的处理程序。
class MyHandler(BaseHandler):
def get(self):
#handle get requests
def post(self):
#handle post requests
这就是webapp2的作用,我非常喜欢这种风格,是否可以在Django中做到? 我也想要Class-method风格的视图。我应该写什么样的BaseHandler和路由器。
提示:使用django通用视图。
答案 0 :(得分:18)
Django支持class based views。您可以扩展通用类View
并添加get()
,post()
,put()
等方法。 -
from django.http import HttpResponse
from django.views.generic import View
class MyView(View):
def get(self, request, *args, **kwargs):
return HttpResponse('This is GET request')
def post(self, request, *args, **kwargs):
return HttpResponse('This is POST request')
dispatch()
类的View
方法处理此 -
发送(请求,* args,** kwargs)
视图的视图部分 - 接受请求参数加参数的方法,并返回一个 HTTP响应。
默认实现将检查HTTP方法并尝试 委托给匹配HTTP方法的方法; GET将是 委托给get(),POST到post()等等。
默认情况下,HEAD请求将委派给get()。如果你需要 以与GET不同的方式处理HEAD请求,您可以覆盖 head()方法。有关示例,请参阅支持其他HTTP方法。
默认实现还将request,args和kwargs设置为 实例变量,因此视图上的任何方法都可以知道完整 用于调用视图的请求的详细信息。
然后您可以在urls.py
-
from django.conf.urls import patterns, url
from myapp.views import MyView
urlpatterns = patterns('',
url(r'^mine/$', MyView.as_view(), name='my-view'),
)