【问题标题】:Django similar url pattern issueDjango 类似的 url 模式问题
【发布时间】:2021-10-14 13:32:45
【问题描述】:

我正在开发一个产品比较模块,并且有如下的 url 模式:

path('comparison/<slug:slug1>-vs-<slug:slug2>/', views.compare_two_products, name="compare_two_products"),
path('comparison/<slug:slug1>-vs-<slug:slug2>-vs-<slug:slug3>/', views.compare_three_products, name="compare_three_products"),

问题是 Django (3.2.6) 总是匹配第一个模式并在我尝试访问第二个模式时返回 404。但是,如果我注释掉第一个模式,那么它就可以很好地匹配第三个模式。我想让这两种模式都以 slug-vs-slug-vs-slug 格式工作。关于我可能做错的任何建议?

提前致谢。

【问题讨论】:

    标签: django django-urls slug


    【解决方案1】:

    只需更改顺序或网址,例如

    path('comparison/<slug:slug1>-vs-<slug:slug2>-vs-<slug:slug3>/', views.compare_three_products, name="compare_three_products"),
    path('comparison/<slug:slug1>-vs-<slug:slug2>/', views.compare_two_products, name="compare_two_products"),
    

    应该可以的

    【讨论】:

    • 谢谢@Sumithran 从没想过订单很重要。但是在 Django 尝试将其与第一个相似的 url 匹配之后,这完全有意义。
    猜你喜欢
    • 2014-07-25
    • 2020-07-25
    • 2011-06-10
    • 2011-10-22
    • 1970-01-01
    • 2020-02-22
    • 2011-06-30
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多