很抱歉,如果这是一个微不足道的问题,但我已经搜索了很长时间,并且无法找到一个好的实现。
有人可以通过继承任何通用视图来提供如何在Django中实现仅后视图(可以处理文件上传)的示例吗?
我想创建一个处理所有博客帖子评论创建逻辑的端点。评论表单嵌入在我的博客页面中,因此,这些数据将作为POST
发送到网址。
答案 0 :(得分:21)
self.navigationController?.popViewControllerAnimated(true)
类有一个http_method_names
属性,列出了视图将接受的HTTP方法。
因此,您可以子类化您喜欢的任何通用视图(例如,CreateView
),并设置View
以便只允许POST请求。
http_method_names
或者,您可以继承from django.views.generic.edit import CreateView
class CommentCreateView(CreateView):
http_method_names = ['post']
model = Comment
...
,并编写自己的post方法。
View
在这种情况下,GET请求将返回class CommentView(View):
def post(self, request):
...
响应,因为您尚未定义HttpResponseNotAllowed
方法来处理GET请求。
答案 1 :(得分:5)
您可以尝试以下方式:
class MyView(TemplateView):
template_name = 'my_template.html'
def post(self, request, **kwargs):
my_data = request.POST
# do something with your data
context = {} # set your context
return super(TemplateView, self).render_to_response(context)
答案 2 :(得分:3)
来自docs:
dispatch查看请求以确定它是否为GET,POST等,并将请求中继到匹配方法如果已定义,或者引发HttpResponseNotAllowed
基本上,您创建的任何基于类的视图(仅定义POST
方法)只允许POST请求。
答案 3 :(得分:0)
我想这样的事情应该有效:
class TestView(View):
def post(self, request):
return HttpResponse('This is a post only view')
如果使用Django Rest Framework,也可以使用CreateAPIView来完成此操作 http://www.django-rest-framework.org/api-guide/generic-views/#createapiview
用于仅限创建的端点。
提供post方法处理程序。