Django 类似的 url 模式问题
Posted
技术标签:
【中文标题】Django 类似的 url 模式问题【英文标题】:Django similar url pattern issue 【发布时间】: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 格式工作。关于我可能做错的任何建议?
提前致谢。
【问题讨论】:
【参考方案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 匹配之后,这完全有意义。以上是关于Django 类似的 url 模式问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中使用来自 urls.py 的变量重定向 url 模式?