不允许的方法(POST):/

Posted

技术标签:

【中文标题】不允许的方法(POST):/【英文标题】:Method Not Allowed (POST): / 【发布时间】:2022-01-23 12:31:24 【问题描述】:

我正在尝试制作一个简单的单页商店。我制作了一个 ListView 项目,它没有问题。购物车将处于模态。我制作了购买按钮,但每当我按下它时,它都会显示:

Method Not Allowed (POST): /
Method Not Allowed: /
[22/Dec/2021 11:40:04] "POST / HTTP/1.1" 405 0

以下是我的观点:

from django.shortcuts import render
from django.views.generic import ListView
from .models import Item
from .forms import AddCartForm

class ItemsListView(ListView):
    model = Item
    template_name = 'main_page.html'

def aBuy(request):
    form = AddCartForm
    if request.method == 'POST':
        print('BUY BUY')
    return render(request, 'main_page.html', 'form':form)

这是表格:

class AddCartForm(ModelForm):
    class Meta:
        model = Item
        fields = ['price', 'quantity']

html中的表单:

<div class="col" style="text-align:left">
                          <form name="buy" method="POST">
                              % csrf_token %
                               form 
                            <input type="submit" class="btn btn-info butt" value="Buy">
                          </form>
                      </div>

因此,我无法继续制定将其添加到未来购物车的逻辑。 print('BUY BUY') 仅用于测试。 在 url 文件中,它只是带有ItemListView.as_view 的主页。我尝试将 aBuy 函数放入其中再取出,同样的问题仍然存在。

【问题讨论】:

为什么您希望 Django 在您单击购买按钮时执行您的aBuy 视图?您正在尝试将 POST 发送到您的 ListView,这是不受支持的(也不是您想要的)。 @Selcuk 因为它在&lt;form&gt;&lt;/form&gt;?如何连接? 请提供您的 urls.py How do I connect it:这太宽泛了,无法在 Stack Overflow 评论中解释。我建议你先从教程中学习 Django 基础知识。 【参考方案1】:

您忘记了表单中的action 属性:

<form action="/path-to-post-url/" method="post"> 
  % csrf_token % 
   form  
  <input type="submit" value="Submit">
</form>

你可以在这里Django Forms阅读更多关于模板和表格的信息。

【讨论】:

以上是关于不允许的方法(POST):/的主要内容,如果未能解决你的问题,请参考以下文章

为啥不允许我的 Post 方法?

不允许的方法(POST):/

CORS 实现显示不允许用于 POST 请求的方法

WCF POST 方法返回“方法不允许”

Axios POST 方法:405 方法不允许

不允许使用 Django 方法 (POST)