Django GET和POST处理方法

时间:2013-05-21 11:03:01

标签: python django

我想要一种以集中方式自动将GET和POST请求路由到后续方法的方法。 我想以下列方式创建我的处理程序。

class MyHandler(BaseHandler):
    def get(self):
        #handle get requests

    def post(self):
        #handle post requests

这就是webapp2的作用,我非常喜欢这种风格,是否可以在Django中做到? 我也想要Class-method风格的视图。我应该写什么样的BaseHandler和路由器。

提示:使用django通用视图。

1 个答案:

答案 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'),
)