est*_*est 0 python django post django-views django-class-based-views
示范:
from django.views.generic.base import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
class TestView(View):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return HttpResponse('haha')
Run Code Online (Sandbox Code Playgroud)
urls.py是
url(r'^test/', TestView.as_view()),
Run Code Online (Sandbox Code Playgroud)
所以当GET你可以看到haha,但在POST时你会得到一个空白页...
我在这里错过了什么?
编辑:澄清我在做什么.我正在编写一个JSON流CURD视图,我需要以各种方式解析JSON.其中之一是当ppl POST数据具有某种模式时,视图将调度到视图内的另一个方法并返回一些东西.但结果却没有回报.所以我告诉你最小的PoC.请帮我解决我的代码错误.TIA!
顺便说一下可能的相关问题
您需要实现其post方法.请参阅基于类的视图.
from django.http import HttpResponse
from django.views.generic import View
class TestView(View):
@method_decorator(csrf_exempt)
def dispatch(self, *args, **kwargs):
# do something
return super(TestView, self).dispatch(*args, **kwargs)
def post(self, request, *args, **kwargs):
# do somthing
def get(self, request, *args, **kwargs):
return HttpResponse('Hello, World!')
Run Code Online (Sandbox Code Playgroud)
查看更多dispatch 文档.
默认实现将检查HTTP方法并尝试委托给与HTTP方法匹配的方法; 一个GET将被委托给get(),一个POST到post(),依此类推.
所以以前你打扰了上面的逻辑,调用super将允许dispatch委托post方法.
| 归档时间: |
|
| 查看次数: |
3784 次 |
| 最近记录: |