【发布时间】:2021-09-17 02:28:17
【问题描述】:
我正在 Django(书籍示例)中开发购物车应用程序。当我尝试通过浏览器对其进行测试时,它响应 405 method not allowed 错误。据我了解,当我通过表单(方法='post')发送请求时,它正在发送 http GET 请求。据我所知,这是错误(405)的原因。 这是 HTML 表单:
<form action="{% url 'cart:cart_add' product.id %}" method="POST">
{{ cart_product_form }}
{% csrf_token %}
<input type="submit" value="Add to cart">
</form>
forms.py 文件:
from django import forms
PRODUCT_QUANTITY_CHOICES = [(i, str(i)) for i in range(1,21)]
class CartAddProductForm(forms.Form):
quantity = forms.TypedChoiceField(choices=PRODUCT_QUANTITY_CHOICES, coerce=int)
override = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput)
views.py 文件:
@require_POST
def cart_add(request, product_id):
cart = Cart(request)
product = get_object_or_404(Product, id=product_id)
form = CartAddProductForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
cart.add(product=product, quantity=cd['quantity'], override_quantity=cd['override'])
return redirect('cart:cart_detail')
@require_POST
def cart_remove(request, product_id):
cart = Cart(request)
product = get_object_or_404(Product, id=product_id)
cart.remove(product)
return redirect('cart:cart_detail')
@require_POST
def cart_detail(request):
cart = Cart(request)
return render(request, 'cart/detail.html', {'cart': cart})
【问题讨论】:
-
第一次加载页面或从表单提交数据时是否出现错误?
-
在这两种情况下,它都会重定向到 cart_detail 视图。所以无论如何我得到了这个错误
标签: python django http-status-code-405