Django的备用URL路由器

3
如何在Django中使用模型和模板,但不使用URL路由系统?我想交换urls.py系统,采用类似PHP的方法,其中URL告诉您正在运行的代码的确切位置。或者像Rails一样使用更自动化的东西--其中URL始终包括相同的组件,如应用程序名称、模型名称和视图名称。
我不同意来自Django哲学声明中的这条线:“将URL与Python函数名称绑定是一件坏事和丑陋的事情。” 对我而言,漂亮的URL并不是那么重要,而且在多个urls.py文件和数十个正则表达式的迷宫中爬行以找出特定URL背后运行的代码的复杂性不值得。这是一个个人选择,对吧? Django通常非常模块化,允许您将主要组件替换为其他组件。那么,我该如何交换掉负责接收请求URL并决定运行哪个视图的部分呢?
是否有任何替代Django的URL路由器?
2个回答

4

在您的urls.py中只需要一行匹配所有内容,然后以视图的形式编写您的处理程序/调度程序。该处理程序基于URL的不同部分执行您想要的任何操作...


2
我从未听说过有人成功更换Django的URL路由系统。显然没有钩子可以实现这个功能 - core.handlers.base.BaseHandler.get_response 直接调用urlresolvers.RegexURLResolver。你可以在栈底添加一个中间件,将请求转发到自己的URL解析系统并返回响应,从而绕过Django系统,但这有点笨拙。
如果你想要像Rails一样的东西,你可能会尝试其他框架之一 - 例如Pyramid,它使用了与Rails非常相似的路由系统。Pyramid比Django更容易插入,因此您应该能够插入基于Django的Jinja2模板系统。然而,没有办法单独使用Django的ORM,所以您需要使用SQLAlchemy(其用法与Django的不同不是非常大)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接