我正在尝试使用 Django 开发一个电子商务网站。所以我现在,用户可以将商品添加到购物车,但是当我尝试继续结帐时,由于某种原因,我的结帐表单没有显示,而是显示:
找不到页面 (404)
我确保我已经注册了我的模型并运行了迁移。
问题是什么?
我的观点.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)
我的结帐.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>
我的网址.py:
from orders import views as orders_views
path('checkout/', orders_views.checkout, name='checkout'),
你已经实现了GET
请求处理不正确,参考见这个例子 https://docs.djangoproject.com/en/3.0/topics/forms/#the-view从文档中。在您的情况下,表格始终无效,因为在以下情况下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)
您需要指定表单有效时应该发生的情况:例如重定向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)