django re_path unresolved regex(\d[1,2])

bogh5gae  于 2023-06-25  发布在  Go
关注(0)|答案(3)|浏览(99)

请让我知道为什么我的正则表达式无法解析,我只是从Django的一本书中复制并粘贴,并试图传递参数re_path(r'^time/plus/(\d[1,2])/$', hours_ahead)。刚刚尝试将参数附加小时数传递到当前时间。

http://127.0.0.1:8000/time/plus/2

404页面找不到(404)当前路径time/plus/2不匹配其中任何一个。
我不明白这有什么问题。请帮帮忙,谢谢。

ycl3bljg

ycl3bljg1#

这是因为如果您只需要一个或两个这样数字,则这是错误的正则表达式,因此没有必要这样指定

case 1:
only 1 and 2 is accept
want:time/plus/2/ --pass
want:time/plus/1/ --pass
want:time/plus/3/ --fail
regex: r'^time/plus/[1,2]/$'

case 2:
length of that is 1 or 2 
want:time/plus/2/ --single digit -pass
want:time/plus/33/ --two digit -pass
want:time/plas/333/ --three digit -fail 
regex: r'^time/plus/\d{1,2}/$'
6jjcrrmo

6jjcrrmo2#

PATH必须以/结束,你必须像这样写路径http://127.0.0.1:8000/time/plus/2/或者你修改你的正则表达式删除结尾的/$,你以前的路由http://127.0.0.1:8000/time/plus/2可以工作

vd2z7a6w

vd2z7a6w3#

你的正则表达式有几个问题:

^time/plus/(\d[1,2])/$
              ^     ^

1.要匹配一个或两个数字,需要使用语法\d{1,2}\d[1,2]将匹配任何数字,后跟1、逗号或2
1.你的正则表达式需要一个斜杠,而你的输入似乎没有。
就像

^time/plus/(\d{1,2})/?$

可能会有用

相关问题