如何重定向到 Django 中的绝对 url 路径?

How to redirect to an absolute url path in django?

我正在尝试使用 Django 模板中的 'url' 属性从监视列表页面重新路由到“列表”路径。然而,问题是 Django 忽略了它已经在重新路由中使用的 URL 的部分(即“/watchlist”),因此寻找路径为“/watchlist/listing_title”的 url只是“/listing_title”,这就是我想要的。有办法解决这个问题吗?

urls.py

path("", views.index, name="index"),
path("<str:listing_title>", views.listing, name="listing"),
path("watchlist", views.watchlist, name="watchlist"),

watchlist.html

<a href={% url 'listing' listing.title %}">

它永远不会访问 watchlist,因为 <str:listing_title> 将匹配 /watchlist。您应该重新排序路径,并使用:

path('', views.index, name='index'),
path('<strong>watchlist</strong>', views.watchlist, name='watchlist'),
path('<strong><str:listing_title></strong>', views.listing, name='listing'),

Django 将从上到下枚举所有 URL 模式,并“触发”具有匹配 URL 模式的第一个视图。如果我们因此将 <str:listing_title> 放在第一位,它将匹配 watchlist<str:…> 路径部分,因此永远不会触发 listing.