【问题标题】:Django url re_path failed to redirect to the correct viewDjango url re_path 无法重定向到正确的视图
【发布时间】:2021-10-13 12:45:51
【问题描述】:

Django re_path 不匹配,不知道是什么原因。

urls.py

urlpatterns = [
    ..
    re_path(r'^localDeliveryPayment\?paymentId\=(?P<UUID>[0-9-a-z]{32})$', verifyMobilePayReceived.as_view()),
    re_path(r'^localDeliveryPayment$', Payment.as_view(), name = 'localDeliveryPayment'),
    ..
]

如果网址 www.example.com/localDeliveryPayment 用户被定向到付款视图。

如果 url www.example.com/localDeliveryPayment?paymentId=00340000610febab0891e9008816d3e9 用户应该被引导到 verifyMobilePayReceived 视图。问题是现在www.example.com/localDeliveryPayment?paymentId=00340000610febab0891e9008816d3e9 仍然指向付款视图。

【问题讨论】:

  • 查询字符串(带有?paymentId=... 的部分)不是路径的一部分。
  • 因此您必须创建一个更复杂的视图,检查request.GET 是否包含paymentId

标签: python django django-urls


【解决方案1】:

您试图在您的 URL 路由中捕获一个 GET 参数,这是您尝试做的不正确的方式。

要么继续您当前传递 paymentId GET 参数的方法,并检查它是否存在于您的 Payment.as_view() 视图中,要么您可以将其重新设计为类似的东西。

    re_path(r'^localDeliveryPayment/<UUID:NAME_OF_UUID_IN_MODEL>/', verifyMobilePayReceived.as_view()),

这应该为您想要的模型提供过滤。

【讨论】:

  • 非常感谢您向我指出这一点。我还是没有经验,没有意识到这部分?paymetId实际上是request.GET中的一个参数
猜你喜欢
  • 2017-06-22
  • 2021-04-16
  • 1970-01-01
  • 2021-06-16
  • 2014-10-02
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多