无法访问Django结帐:找不到页面(404)

编程入门 行业动态 更新时间:2024-10-13 20:17:14
本文介绍了无法访问Django结帐:找不到页面(404)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用Django开发一个电子商务网站。因此,我现在在这里,用户可以将商品添加到购物车中,但是由于某种原因,当我尝试进行结帐时,我的结帐表格并未显示,而是说:

找不到页面(404)

我确保已注册我的模型,然后进行迁移。

出了什么问题?

我的views.py:

@login_required def checkout(request): address_form = UserAddressForm(request.POST或None)如果address_form.is_valid(): new_address = address_form.save(commit = False) new_address.user = request.user new_address.save() else:提高Http404 print(form.errors) context = { address_form:address_form} template = orders / checkout.html return render(request,template,上下文)

我的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 =下订单 /> < / div> < / form>

我的urls.py:

从订单中将视图导入为orders_views 路径('checkout /',orders_views.checkout,name ='checkout'),

解决方案

您错误地实现了 GET 请求处理,请参阅从文档中此示例。在您的情况下,表单始终无效,因为在 GET 请求的情况下,该表单没有初始化。但是,您甚至不必在GET请求中验证空白表格。

您的代码已更新:

@login_required def checkout(request): if request.method =='POST': address_form = UserAddressForm(request.POST)如果address_form.is_valid(): new_address = address_form.save(commit = False) new_address.user = request.user new_address.save() return#TODO:返回什么? else:#否则(如果有GET请求),我们在这里 address_form = UserAddressForm() context = { address_form:address_form} 返回render(request, orders / checkout.html,上下文)

您需要指定应该在表单有效时发生:例如重定向。

I'm trying to develop an e-commerce site with Django. So I'm at this point where, users can add items to their cart, but when I try to proceed to checkout, for some reason, my checkout form is not displayed rather, it says:

Page not found (404)

I made sure that I have registered my models, and ran migrations.

What is the problem?

My 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)

My 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>

My urls.py:

from orders import views as orders_views path('checkout/', orders_views.checkout, name='checkout'),

解决方案

You've implemented GET request handling incorrectly, for reference see this example from the docs. In your case form was always invalid because in case of GET request it was initialized with none. However you don't even have to validate empty form on GET request.

Your code updated:

@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)

And you need to specify what is supposed to happen when the form is valid: redirect for example.

更多推荐

无法访问Django结帐:找不到页面(404)

本文发布于:2023-11-15 10:14:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1593522.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:找不到   无法访问   页面   Django

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!