django - 在 django 上重定向到带有 pk 的页面
问题描述
这个功能是更新订单,我想被重定向到客户资料页面,在那里我可以找到所有该客户的订单。在客户资料上,我列出了所有带有修改或删除选项的订单。我想修改并重定向到 url 为的客户资料页面:
path("customer_profile/<int:pk>/", views.Customer_profile, name="customer_profile")
def OrderUpdate(request, pk):
order = Order.objects.get(id=pk)
form = OrderForm(instance=order)
if request.method == 'POST':
form = OrderForm(request.POST, instance=order)
if form.is_valid():
form.save()
return redirect('orders')
context = {'form':form}
return render(request, 'orders/order_form.html', context)
解决方案
您可以重定向customer_profile
到Order
. 如果ForeignKey
from Order
toCustomer
被命名customer
,您可以重定向到:
from django.shortcuts import get_object_or_404
def OrderUpdate(request, pk):
order = get_object_or_404(Order, pk=pk)
form = OrderForm(instance=order)
if request.method == 'POST':
form = OrderForm(request.POST, instance=order)
if form.is_valid():
form.save()
return redirect('customer_profile', pk=order.customer_id)
context = {'form':form}
return render(request, 'orders/order_form.html', context)
注意:通常最好使用
get_object_or_404(…)
[Django-doc],然后直接使用.get(…)
[Django-doc]。如果对象不存在,例如因为用户自己更改了 URL,get_object_or_404(…)
将导致返回HTTP 404 Not Found响应,而 using.get(…)
将导致HTTP 500 Server Error。
推荐阅读
- php - 如何将计数结果显示到刀片模板
- ios - 如何在不重叠tableview ios swift中的其他单元格的情况下重用表格视图单元格
- python-3.x - 多个用户如何共享一个 PipFile
- wpf - WPF DataGrid:CanUserAddRows 产生空记录(当然还有空行)
- python-3.x - 计算熊猫中2个日期的分钟差
- c# - 如何在 Visual Studio 2017 中为 .sql 文件创建自定义扩展名
- angular - Angular 6中不纯管道的替代品?
- python - 根据指定深度动态回填 Pandas DataFrame
- php - php - 如何在 substr 中增加 80% 以上相似度的计数
- javascript - 如何正确处理 React 中的非 PrivateRoutes?