不允许的方法:/(Django-Post 方法)

Method Not Allowed: / (Django-Post Method)

当我提交表单时,它在控制台中显示 "Method Not Allowed: /"..

类似的东西: 不允许的方法:/ [17/Mar/2019 18:31:18] "POST / HTTP/1.1" 405


我在 views.py 文件上使用它..

class UrlAccpt(View):

    template_name='phc/url_accpt.html'

    def get(self,request):
        urlx=''
        form = UrlForm(request.POST)
        if request.method == 'POST':
            form = UrlForm(request.POST)
            if form.is_valid():
                urlx= form.cleaned_data['EnterTheUrl']

        form = UrlForm(request.POST)

    response = TemplateResponse(request,self.template_name,{'form':form,'value':urlx})
    return response

并在 forms.py 文件中...我使用此代码

from django import forms


class UrlForm(forms.Form):

    EnterTheUrl=forms.CharField(max_length=1000)

欢迎来到 class 基础观点:

您需要在 class 中指定 post 函数。 Get 函数仅在 GET 方法上触发,不适用于 POST 请求。

添加以下函数并将您的 post 逻辑移至此处...

def post:
   ...

看看docs

基于

Class 的视图无法以这种方式工作。您必须为要涵盖的每个 http 方法类型定义一个方法(至少如果您只是继承自 View)class。因此,像这样在基于 class 的视图中为 post 定义一个方法,它将起作用

class UrlAccpt(View):

    template_name='phc/url_accpt.html'

    def get(self,request):
        urlx=''
        form = UrlForm()

   def post(self,request, *args, **kwargs):
        form = UrlForm(request.POST)
        if form.is_valid():
            urlx= form.cleaned_data['EnterTheUrl']

您可以在 this 文档

支持其他 HTTP 方法 中阅读相关内容