python - 如何让 django 将用户重定向到我需要的页面?
问题描述
如何让 django 将用户重定向到我需要的页面?
我有一个网络应用程序。例如,用户在地址为 local:8000/detail-order/18 的页面上。此页面是订单 18 的详细信息。在此页面上是编辑此订单的链接。当用户单击此链接时,将显示一个订单编辑表单。当用户在此表单中写入并单击提交按钮时,他有一个错误。我希望用户回到本地:8000/detail-order/18。
/update-orders/18 处的 NoReverseMatch
未找到任何参数的“detail_order”反向。尝试了 1 种模式:['detail\-order/(?P[0-9]+)$']
请求方法:POST
请求网址: http: //192.168.0.249 :8000/update-orders/18
Django 版本:3.0.5
异常类型:NoReverseMatch
异常值:
未找到任何参数的“detail_order”反向。尝试了 1 种模式:['detail\-order/(?P[0-9]+)$']
异常位置:/root/.local/share/virtualenvs/myp4-4l8n6HJk/lib/python3.7/site-packages/django/urls/resolvers.py 在_reverse_with_prefix,第677行
网址.py
from django.contrib import admin
from django.urls import path, include
from .views import *
from print import views
urlpatterns = [
path('', views.home_page, name='index'),
path('orders', views.OrderCreateView.as_view(), name='orders'),
path('update-orders/<int:pk>', views.UpdateOrderView.as_view(), name='update_order'),
path('delete-orders/<int:pk>', views.DeleteOrderView.as_view(), name='delete_order'),
path('detail-order/<int:pk>', views.DetailOrderView.as_view(), name='detail_order'),
]
视图.py
class UpdateOrderView(CustomSuccessMessageMixin, UpdateView):
model = Order
template_name = 'orders.html'
form_class = OrderForm
success_url = reverse_lazy('detail_order')# HERE
success_msg = 'Изменения сохранены'
def get_context_data(self, **kwargs):
kwargs['update'] = True
return super().get_context_data(**kwargs)
解决方案
您可以覆盖.get_success_url(..)
方法 [Django-doc]从而注入参数:
from django.urls import reverse
class UpdateOrderView(CustomSuccessMessageMixin, UpdateView):
model = Order
template_name = 'orders.html'
form_class = OrderForm
success_msg = 'Изменения сохранены'
def get_context_data(self, **kwargs):
kwargs['update'] = True
return super().get_context_data(**kwargs)
def get_success_url(self):
return reverse('detail_order', kwargs={'pk': self.object.pk})
推荐阅读
- c - 为什么这个程序不写result.txt?
- gradle - 我尝试在我的颤振应用程序中使用地图视图并遇到一些错误
- reactjs - 从文件导入时,样式化的 NavLink 不起作用
- reactjs - 如何从 TouchableOpacity press 全屏启动 RN Expo 相机?
- c - 从输入检查可能的 Int 溢出
- amazon-web-services - 如何获取 AWS 中所有账户的所有 EC2 信息
- php - 如何从mysql准备语句中的两个表中选择值
- apache - 在 MAMP PRO 5.x 上使用 Apache 2.4
- c# - 如何检查两件事是否正确
- drupal-7 - 在drupal 7中,如果我禁用然后启用webform模块,我会丢失webforms