gpt4 book ai didi

django - Django url 的优先级

转载 作者:行者123 更新时间:2023-12-01 11:11:42 25 4
gpt4 key购买 nike

我一直在使用 django rest framework 开发的电子商务平台。 url 的数量日益增加,并且有许多设计结构相似的 API 端点(url)。

如:

/api/user/<str:user_uniq_id>/

/api/user/sigin/

/api/user/registration/

/api/user/invitation/edit/

/api/user/invitation/<str:uniq_id>/

有时,当我点击任何 url 时,另一个 url 会被触发。假设我打了 /api/user/<str:user_uniq_id>但是/api/user/signin/被调用。

我该如何解决这个问题?

django url 是否有任何排序优先级?

最佳答案

简答:制作非重叠模式。

问题在于您的模式重叠。确实,如果 url 是 /api/user/signin/ ,以及 /api/user/<str:user_uniq_id>/是您的 URL 列表中的第一个模式,它将匹配该模式。事实上,自从 <str:user_uniq_id>可以简单的与signin统一.列表中后面还有另一个 url 也匹配的事实是不相关的。

因此,您应该设计非重叠模式。这意味着不能由一种模式生成的 url 可以由另一种模式生成。

例如,您可以将网址设计为:

/api/user<b>/details</b>/<str:user_uniq_id>/
/api/user/signin/
/api/user/registration/
/api/user/invitation/edit/
/api/user/invitation<b>/details</b>/<str:uniq_id>/

因此使用 /details ,没有办法,一个URL /api/user/sigin可以匹配第一个模式,因为它需要包含 /api/user/details作为前缀。

或者,您可以将 /api/user/signin路径列表中的第一个路径。但这对我来说似乎不是一个好主意。如果稍后用户拥有 uniq_id简单 'signin' (是的,这可能看起来很少见,但最终可能会发生),那么该用户将看不到他/她的“详细信息”页面。

关于django - Django url 的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com