如何和谐地编写 django webapps?

Posted

技术标签:

【中文标题】如何和谐地编写 django webapps?【英文标题】:How to harmonically compose django webapps? 【发布时间】:2013-01-07 16:23:00 【问题描述】:

Django 的理念是关于 webapps 的可重用性。但是如何实现不同webapp之间的模板和谐呢?

这是一个假设示例:我想重新使用 webapp 1(例如,django_openid)来启用 OpenID 登录;我想重用 webapp 2(例如,django invitation app)来邀请客户;我想编写自己的统计应用程序(MTV)

但他们的模板通常看起来并不属于单个项目。如何以最少的干扰工作重用现有工作(上述假设示例中的 Web 应用 1 和 Web 应用 2)?

【问题讨论】:

【参考方案1】:

我假设“侵入式”是指在可重用应用程序中编辑文件。

在完全不打扰的情况下,您应该能够覆盖可重用应用程序中的任何模板,方法是将它们放在项目级模板目录中,或者通过在您自己的应用程序中提供具有匹配名称的模板。

Django 模板加载是完全可配置的,但默认情况下,它将首先在设置中命名为TEMPLATE_DIRS 的目录中查找,然后在每个已安装应用程序的templates 目录中查找,按照它们出现的顺序。通过将您的应用放在 INSTALLED_APPS 中的 openid 或邀请之前,您的自定义模板将被加载,而不是提供的模板。

在某些情况下,我为一个项目创建了一个“应用程序”,它实际上只是一个空的 models.py 和一组模板。然后我有一个地方来存储站点基础模板,以及来自其他应用程序的所有覆盖模板。

【讨论】:

为什么要一个空的应用程序呢?您提到了 TEMPLATE_DIRS ...该目录就足够了 IMO :)【参考方案2】:

django invitation app 与大多数可重复使用的应用程序一样,具有带有 usage 部分的文档。这将解释如何在您的项目中重用该应用程序。

根据自述文件,django_openid 似乎“尚未准备好”,因此您需要深入研究代码才能使用它。

一般来说,您需要转到您尝试重用的应用程序的文档并查找使用/实现部分。

【讨论】:

以上是关于如何和谐地编写 django webapps?的主要内容,如果未能解决你的问题,请参考以下文章

WSGI介绍

如何将 Django 的标记模板标签与 Google App Engine WebApp 框架一起使用

Caused by: Unable to load configuration. - action - file:/C:/apache-tomcat-7.0.70/webapps/Structs/WE

Django 的部署

如何最好地集成 Flex 和 Django?

我将如何编写一个嵌入代码,从我有 URL 的一组图像中提供一个随机图像? (不和谐.py)