#python #django #path #re
#python #django #путь #python-re
Вопрос:
Пожалуйста, дайте мне знать, почему мое регулярное выражение не может быть разрешено, я просто скопировал и вставил из одной из книг Django и попытался передать параметр re_path(r'^time/plus/(d[1,2])/$', hours_ahead)
. Просто попытался передать параметру дополнительные часы к текущему времени.
http://127.0.0.1:8000/time/plus/2
затем я получил ошибку страница не найдена (404). Текущий путь, time / plus / 2, не соответствует ни одному из них.
Я не понимаю, в чем здесь проблема. пожалуйста, помогите, спасибо.
Ответ №1:
это потому, что это неправильное регулярное выражение, если вам нужно только одно и два числа, подобных этому, поэтому нет смысла указывать подобное
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}/$'
Комментарии:
1. Спасибо, Кишан, это отличное объяснение. Ценю это.
Ответ №2:
Есть несколько проблем с вашим регулярным выражением:
^time/plus/(d[1,2])/$
^ ^
- Чтобы сопоставить одну или две цифры, вам нужно использовать синтаксис
d{1,2}
.d[1,2]
будет соответствовать любой цифре, за которой следует1
, запятая или2
. - Для вашего регулярного выражения требуется косая черта в конце, которой, похоже, нет у вашего ввода.
Что-то вроде
^time/plus/(d{1,2})/?$
может сработать.