Регулярное выражение не работает в Django - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь настроить регулярное выражение для перенаправления пользователей в поле url fieldguide / 0e, если они вводят что-либо кроме 0e или 0E в качестве первых двух символов после URL.В моем файле urls.py есть следующее:

url(r'^fieldguide/(?P<IDmatch>0[eE]([0-9A-Fa-f]{0,14}))/$', 'treeView', name='index'),
url(r'^fieldguide/./$', 'treeDirect', name='index'),
url(r'^fieldguide/(?!0[Ee]$)/$', 'treeDirect', name='index'),

Первый обрабатывает, когда пользователь вставляет правильный URL-адрес в URL, это прекрасно работает.2nd обрабатывает, когда пользователь вводит только один символ.Также работает отлично.Третий - то, где у меня возникают проблемы, я пробовал многие варианты этого (заключенные в скобки, без $ и т. Д.), Но ни одна из них, похоже, не работает.Может кто-нибудь сказать мне, как я делаю это неправильно?

1 Ответ

0 голосов
/ 13 декабря 2011

Django не поддерживает подробные регулярные выражения - то есть '(? X)' - потому что они действительно затрудняют определение URL для представления (в отличие от представления из URL).

Хорошая новость заключается в том, что URL-адреса Django предназначены для каскадирования, поэтому вы можете просто сделать что-то вроде следующего:

url(r'^fieldguide/(?P<IDmatch>0[eE]([0-9A-Fa-f]{0,14}))/$', 'treeView', name='index'),
url(r'^fieldguide/.*$', 'treeDirect', name='index-redirect'),
...