Большинство представлений в моем проекте принимают необязательный параметр имени пользователя и, если он существует, фильтруют наборы запросов, передаваемые в шаблоны для этого пользователя. Так, например:
представление индекса обрабатывает оба следующих шаблона 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/$'
когда он соответствует рекурсивно включенному модулю URL-адресов с дополнительным параметром имени пользователя. Но это привело к тому, что сервер разработки молча умирал при выполнении запроса.
Второй подход, который я могу придумать, состоит в том, чтобы написать промежуточное программное обеспечение, которое будет соответствовать шаблону в URL-адресе, если он существует, и добавить просматриваемого пользователя в запрос и удалить часть, которая соответствует имени пользователя, из пути запроса. Но я не хочу возиться с путем, так как это может привести к непредсказуемым результатам.
Что бы вы порекомендовали? Я слишком придирчив к СУХОСТИ?
Спасибо, омат