Большинство представлений в моем проекте принимают необязательный параметр имени пользователя и, если существует, фильтруют наборы запросов, передаваемые шаблонам для этого пользователя. Так, например:
индексное представление обрабатывает оба следующих шаблона URL:
'^$' # general index page
'^(?P<username>[-\w]+)/$' # index page for the user
'^photos/$' # photo index page
'^(?P<username>[-\w]+)/photos/$' # photos for that user
...
Поскольку существует ряд таких приложений, кажется, не очень СУХОЙ реализовать ту же логику путем репликации шаблонов. Я подумал, что можно рекурсивно включить основной модуль urls.py, поэтому я сделал это:
url(r'^(?P<username>[-\w]+)/', include('urls')),
Мое рассуждение состояло в том, что, когда включен другой модуль URL, соответствующий шаблон удаляется из пути. Итак, я надеялся, что
'^(?P<username>[-\w]+)/photos/$'
станет
'^photos/$'
когда он сопоставляется рекурсивно включенным модулем urls с дополнительным параметром username. Но это заставило сервер разработки молча умереть, когда сделан запрос.
Второй подход, который я могу придумать, - написать промежуточное программное обеспечение, которое будет соответствовать шаблону в URL, если он существует, и добавить просматриваемого пользователя в запрос и удалить часть, соответствующую имени пользователя, из пути запроса. Но я не хочу связываться с этим путем, поскольку это может привести к непредсказуемым результатам.
Что бы вы порекомендовали? Я слишком придирчив к СУХОСТИ?
Спасибо,
Omat