Альтернативный URL-маршрутизатор для Django - PullRequest
3 голосов
/ 28 октября 2011

Как вы будете использовать модели и шаблоны django, но не систему маршрутизации URL?Я бы хотел поменять систему urls.py на что-то вроде PHP, где URL-адрес точно говорит вам, где работает код.Или, может быть, что-то более автоматическое, например, rails - когда URL-адрес всегда содержит одни и те же компоненты, такие как имя приложения, название модели и имя представления.

Я просто не согласен со строкой из философского утверждения django что «привязывать URL к именам функций Python - это плохо и безобразно».Красивые URL-адреса не так уж важны для меня, и IMVHO не стоит того, чтобы пролезть через лабиринт однонаправленности в нескольких urls.py файлах и десятках регулярных выражений, чтобы выяснить, какой код работает за конкретным URL-адресом.Это личный выбор, верно?Django, как правило, довольно модульный, что позволяет вам менять основные компоненты на другие.Итак, как бы я поменял часть, которая берет URL запроса и решает, какое представление запустить?

Есть ли альтернативные URL-маршрутизаторы для django?

Ответы [ 2 ]

4 голосов
/ 28 октября 2011

Все, что вам нужно, это одна строка в вашем urls.py, которая соответствует всему, а затем просто напишите ваш обработчик / диспетчер в качестве представления. Этот обработчик делает все, что вы хотите, основываясь на частях URL ....

2 голосов
/ 28 октября 2011

Я никогда не слышал, чтобы кто-то успешно выменял систему маршрутизации URL Django. Там, конечно, нет ловушки для этого - core.handlers.base.BaseHandler.get_response звонит urlresolvers.RegexURLResolver напрямую. Возможно, вы могли бы добавить промежуточное программное обеспечение в нижней части стека, которое отправляет вашу собственную систему разрешения URL-адресов и возвращает ответ, таким образом обходя систему Django, но это немного глупо.

Если вы ищете что-то более похожее на Rails, вы можете попробовать одну из других платформ - например, Pyramid использует систему маршрутов, очень похожую на Rails '. Pyramid гораздо более подключаем, чем Django, поэтому вы должны иметь возможность подключить систему шаблонов Jinja2, основанную на Django. Тем не менее, нет никакого способа использовать ORM в Django отдельно, поэтому вам нужно использовать SQLAlchemy (который можно использовать таким образом, который не сильно отличается).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...