Python 403支,django'支;基于类的视图

Python 403支,django'支;基于类的视图,python,django,post,django-class-based-views,http-status-code-405,Python,Django,Post,Django Class Based Views,Http Status Code 405,这是我写的一个简单的观点 class PostTestView(View): def post(self, request, *args, **kwargs): print request.POST return HttpResponse("Hello there") myurls.py在上面的视图中有这一行: url(r'^test/create$',PostTestView.as_view(), name='app.views.create_test

这是我写的一个简单的观点

class PostTestView(View):
    def post(self, request, *args, **kwargs):
        print request.POST
        return HttpResponse("Hello there")
my
urls.py
在上面的视图中有这一行:

url(r'^test/create$',PostTestView.as_view(), name='app.views.create_test')
但是当我试图点击
http://127.0.0.1:8000/app/test/create

这显然意味着我的方法
post
不在已定义的方法列表中。但在我看来,我对它的定义如上所述。
这里可能出了什么问题?我不知道

尝试定义get方法


“post”方法通常用于表单中,但当您将浏览器指向url时,使用的方法是“get”

请尝试定义get方法


“post”方法通常用于表单中,但当您将浏览器指向url时,使用的方法是“get”

实际上,请避免直接覆盖
post
get
,除非您确切知道自己在做什么。相反,使用通用的CBV作为起点,根据您试图对视图执行的操作选择一个。这是一个基于类的视图(CBV)。如果您看一看django文档,就会发现重写get和post方法是有文档记录的方法。我猜你指的是基于类的泛型视图,这是一个很好的观点,如果可以的话,使用基于类的泛型视图。你是对的,我说的是泛型CBV。然而,与基于函数的视图不同,强烈建议在深入挖掘之前尝试找到合适的通用CBV,因为您几乎肯定会找到一个。这就是为什么我对你的答案做了评论(这是正确的),而不是写另一个答案。请尝试FormView或LoginView(从django.contrib.auth.views导入LoginView)。您将获得可以在get请求中看到的模板,然后尝试使用submit按钮发布表单。实际上,尝试避免直接覆盖
POST
get
,除非您确切知道自己在做什么。相反,使用通用的CBV作为起点,根据您试图对视图执行的操作选择一个。这是一个基于类的视图(CBV)。如果您看一看django文档,就会发现重写get和post方法是有文档记录的方法。我猜你指的是基于类的泛型视图,这是一个很好的观点,如果可以的话,使用基于类的泛型视图。你是对的,我说的是泛型CBV。然而,与基于函数的视图不同,强烈建议在深入挖掘之前尝试找到合适的通用CBV,因为您几乎肯定会找到一个。这就是为什么我对你的答案做了评论(这是正确的),而不是写另一个答案。请尝试FormView或LoginView(从django.contrib.auth.views导入LoginView)。您将获得可以在get请求中看到的模板,然后尝试使用submit按钮发布表单。