Django / Flask 路由中,出现变量和常量重复,会不会有问题?

2017-07-17 11:41:40 +08:00
 rogwan
比如 url 路由地址:
变量路由 example.com/<username>/
常量路由 example.com/management/

因为 username 是变量,要是有一个用户刚好注册的用户名,也是 management,那路由系统会不会冲突?
1936 次点击
所在节点    Python
9 条回复
111111111111
2017-07-17 11:46:07 +08:00
按顺序匹配,匹配到第一个结构之后中止。
所以注意好优先级不会冲突,比如你这个可以把常量放在上面,匹配到之后就不会再去匹配变量了。
xiaket
2017-07-17 11:48:13 +08:00
推荐做法是通过设计来避免 url 冲突, 例如你的例子里面,变量路由可以改为 example.com/user/<username>/
finab
2017-07-17 11:50:29 +08:00
Flask 中 不会冲突,Django 没用过不知道。
Flask 先匹配常亮路由,之后匹配变量路由。
Sukizen
2017-07-17 11:58:53 +08:00
通过保留字、限制用户名长度解决会不会更好点呢。
pepesii
2017-07-17 12:01:09 +08:00
那干嘛要设计这么蛋疼的路由
pimin
2017-07-17 12:09:37 +08:00
@pepesii
可能只是为了一个看似美观的 URL
siteshen
2017-07-17 12:27:12 +08:00
@pepesii 短小方便易输入

weibo.com/{username}
weibo.com/login
Bviews
2017-07-17 12:56:35 +08:00
自己试一下不就知道了么
upczww
2017-07-17 13:19:12 +08:00
login, admin, management 这类词不要给用户注册

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX