Django URL Dispatcher

Я работал над новым сайтом Django, и у меня возникли проблемы с диспетчером URL.

В основном мне нужна помощь, чтобы следующие URL работали.

/ Сайт / ааа-00

/ Сайт / ааа-00-00

Я посмотрел на диспетчер URL на django docs, и теперь я в замешательстве, ха-ха.

url (r '^ / site / (? P [- \ w] +) / $', 'rollout.views.update'),

Ура Xc0m

1 ответ

Ваше регулярное выражение не собирается делать работу. Я ожидаю, что это будет выглядеть так:

^site/(?P<path>[-\w]+)/$

делать то, что вы хотите. Два основных различия: шаблоны URL не должны совпадать с линией косой черты, т.е. слэш удаляется (или, точнее, не является частью компонента пути URL, но это становится педантичным); а также ?P в выражениях следует взять имя для группы (которая преобразуется в параметр для вашей функции просмотра).

Еще одна вещь, о которой вы можете не знать: у вас есть трейлинг / в конце строки URLconf, но не в URL, которые вы пытаетесь сопоставить. Обратите внимание, что по умолчанию Django (с CommonMiddleware работает) будет автоматически перенаправлять, чтобы включить трейлинг / если путь уже не совпадает с чем-то в URLconf; это можно контролировать с помощью APPEND_SLASH Вариант конфигурации. Это должно "просто работать" в вашем случае, хотя это приводит к перенаправлению, поэтому вы не должны создавать URL-адреса без завершающей косой черты (или делать косую черту необязательной в URLconf).

Другие вопросы по тегам