Все примеры, которые я могу найти в urlpatterns для сайтов django, имеют отдельную запись для входящих URL-адресов, у которых нет главной косой черты или корневой папки. Затем они обрабатывают подпапки на каждой отдельной строке. Я не понимаю, почему простойDjango urlpatterns разочаровывает проблему с завершающими косыми чертами
/?
Регулярное выражение не позволяет им находиться на одной простой линии.
Рассмотрите следующее, назовем проект Django Baloney и имя приложения - Cheese. Таким образом, в проекте urls.py у нас есть что-то вроде этого, чтобы позволить приложениям urls.py обрабатывать его запросы ...
urlpatterns = patterns('',
(r'^cheese/', include('Baloney.Cheese.urls')),
)
затем внутри urls.py сыра приложений, я не понимаю, почему это одна простая линия не вызовет, как верно для всех входящих URL-адрес подпутей, включая пустое значение ...
urlpatterns = patterns('',
(r'^(?P<reqPath>.*)/?$', views.cheeseapp_views),
)
Вместо этого он соответствует пустому случаю, но не случай значения настоящего. Так что ...
http://baloneysite.com/cheese/ --> MATCHES THE PATTERN
http://baloneysite.com/cheese/swiss --> DOES NOT MATCH
В основном я хочу, чтобы захватить переменную reqPath включить все, что там (даже пустой или «»), но не включая любой слэш, если есть один.
URL-адреса являются динамическими пулями, вытащенными из БД, поэтому я делаю все совпадение с содержанием в своих представлениях и просто нуждаюсь в шаблонах url для пересылки значений. Я знаю, что следующие работы, но не понимаю, почему это не все могут быть помещены в одну строку с помощью /? регулярное выражение перед знаком $.
(r'^$', views.cheeseapp_views, {'reqPath':''}),
(r'^(?P<reqPath>.*)/$', views.cheeseapp_views),
Оцените любые идеи.
Я не могу ответить на ваш вопрос, но я уверен, что вы имели в виду r '^ (? P. *?) /? $'. В противном случае ваш конечный слэш всегда будет включен в reqPath. –
cababunga
Я делаю это «все время», и он всегда работает. Вы ввели здесь свой точный код? –
cababunga - какой дополнительный знак вопроса после. * Делаю? . * является регулярным выражением для 0 или символом gazillion. ??? – sansjoe