【问题标题】:Alternate URL router for DjangoDjango 的备用 URL 路由器
【发布时间】:2011-10-28 07:33:12
【问题描述】:

您将如何使用 django 模型和模板,而不是 URL 路由系统?我想将urls.py 系统换成PHP 之类的系统,其中的URL 可以准确地告诉您代码运行的位置。或者可能是更自动的东西,比如 rails 使用的——其中 URL 总是包含相同的组件,如应用程序名称、模型名称和视图名称。

我只是不同意django philosophy statement 中所说的“将 URL 绑定到 Python 函数名称是一件坏事和丑陋的事情”。漂亮的 URL 对我来说并不是那么重要,而且 IMVHO 不值得在多个 urls.py 文件和数十个正则表达式中爬过一个复杂的间接迷宫来找出在特定 URL 后面运行的代码。这是个人选择,对吧? Django 通常是非常模块化的,允许您将主要组件换成其他组件。那么,我将如何换出获取请求 URL 并决定运行哪个视图的部分?

那里有 django 的替代 URL 路由器吗?

【问题讨论】:

    标签: django url-routing


    【解决方案1】:

    您只需要在 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(它可以以一种没有太大不同的方式使用)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-04
        • 2014-06-07
        • 2019-04-27
        • 1970-01-01
        • 2016-01-29
        • 2019-07-17
        • 2020-10-07
        • 2015-10-23
        相关资源
        最近更新 更多