【问题标题】:Integrating django apps in your own views在您自己的视图中集成 django 应用程序
【发布时间】:2012-12-05 22:57:03
【问题描述】:

假设我正在用 django 编写一个包含 wiki、论坛等的复杂站点,或者编写我自己的应用程序,打算从不同的站点重复使用。

我真的很想创建一个底部有论坛的 wiki 页面,或者重新使用我之前编写的具有不同图形布局的 wiki 应用程序。

构建我的应用以允许这种重用的最佳方式是什么?

到目前为止,我一直在 urls.py 中为应用程序提供自己的 url。但是,如果我想在一个页面中将多个应用程序组合在一起,这将不起作用。

此外,我在网上找到的大多数应用程序都有自己的模板,这些模板具有完整的 html,并且没有将创建/准备上下文的逻辑与处理请求和生成回复的逻辑分开。

这里的最佳做法是什么?你做什么工作?编辑来自您在线下载的应用程序的模板?重构它们以适应您的应用程序?

我应该为自己的应用程序做些什么?构造它们,以便它们有一个获取上下文的方法和一个渲染它的方法?

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    Django 对面向组件的体系结构没有很好的开箱即用支持。我有时也觉得这有问题。你会在这里遇到问题。

    1. 架构
    2. 代码

    架构: 由于 Django 不是面向组件的,因此所有应用程序也不是面向组件的。这些应用程序的设计者和编码人员没有考虑过这一点。所以他们刚刚建立了“视图”来与他们的应用程序交互。你需要得到一些更“可插拔”的东西。

    代码:一旦您决定构建它,您就必须找到为此提供的支持。大多数 Django 应用程序的代码都非常好,因此您不会在视图中包含太多代码,而是在其他地方进行抽象。这样您就可以重用该代码并构建您自己的组件。

    示例:假设您正在使用第三方 Wiki 应用程序。该 wiki 具有显示排名最高的标签的视图和用于创建 wiki 条目的其他视图。如果代码足够好(我假设这是因为 Django 有一个非常好的社区),你可以重构它以使用组件。创建条目的视图必须使用一些表单,您可以将其插入自己的站点。并且获得最高排名标签的视图可能使用一些实用功能,或者一些标签管理器的方法。在这种情况下,您可以根据自己的需要对其进行重构。

    希望对你有帮助。

    【讨论】:

      最近更新 更多