Django中re_path的patternA/$无法匹配带前缀URL的问题咨询
Django URL正则匹配问题解答
- 问题核心在于Django的
re_path对正则的匹配规则:它会自动给你写的正则表达式加上开头的^锚点,强制从URL路径的起始位置开始匹配。 - 你最初写的
r'patternA/$'等价于^patternA/$,这个规则要求URL路径必须从开头到结尾完全是patternA/,所以只能匹配http://localhost:8000/patternA/这种路径。 - 而
http://localhost:8000/something/patternA/的实际路径是something/patternA/,开头是something,和^patternA/$的开头锚定要求不匹配,因此返回404错误。 - 换成
.*patternA/$后,等价于^.*patternA/$:其中.*会匹配任意长度的任意字符(除换行符),只要路径的结尾是patternA/就能匹配,自然能覆盖something/patternA/这类带前缀的路径。
内容的提问来源于stack exchange,提问作者Ali Rahgozar
相关产品推荐
相关产品推荐

