[嗨,我正在尝试使用Django开发一个电子商务网站。所以我现在在这里,用户可以将商品添加到他们的购物车中,但是由于某种原因,当我尝试进行结帐时,我的结帐表格并未显示,而是说:
找不到页面(404)
即我的表格无效。我确保已经注册了我的模型,并进行了迁移。
我打印出form.errors并说:
未找到:/ checkout /。
是什么问题?谁能帮我吗?
我的views.py:
@login_required
def checkout(request):
address_form = UserAddressForm(request.POST or None)
if address_form.is_valid():
new_address = address_form.save(commit= False)
new_address.user = request.user
new_address.save()
else:
raise Http404
print(form.errors)
context = {"address_form": address_form}
template = "orders/checkout.html"
return render(request, template, context)
我的checkout.html:
<form method="POST" action=''>
{% csrf_token %}
<fieldset class="form-group">
{{ address_form|crispy }}
</fieldset>
<div class="form-group">
<input type="submit" class="btn btn-outline-dark" value="Place Order"/>
</div>
</form>
我的urls.py:
from orders import views as orders_views
path('checkout/', orders_views.checkout, name='checkout'),
您实施的GET
请求处理不正确,以供参考,请参阅文档中的this example。在您的情况下,表单始终无效,因为在GET
请求的情况下,该表单没有任何初始化。但是,您甚至不必验证GET请求中的空白表格。
您的代码已更新:
@login_required
def checkout(request):
if request.method == 'POST':
address_form = UserAddressForm(request.POST)
if address_form.is_valid():
new_address = address_form.save(commit= False)
new_address.user = request.user
new_address.save()
return # TODO : return what?
else:
# otherwise (if GET request) we get here
address_form = UserAddressForm()
context = {"address_form": address_form}
return render(request, "orders/checkout.html", context)
并且您需要指定表单有效时应该发生的事情:例如重定向。