django可重用的app和django项目结构

时间:2009-08-26 06:49:58

标签: django

我想知道这是不是一个好习惯。我通常在“lib”目录下有可重用的django-apps和python lib,它运行良好。然后我直接在项目根目录下有“模板”目录,我将默认的应用程序模板从lib / django-app / templates复制到我的项目“templates”目录并修改我的布局更改。

现在有时我需要更改/修改相关网站的可重用应用程序的行为,所以我想在我的项目下创建一个“新应用程序”并根据需要修改内容。这样我就可以很好地升级可重复使用的应用程序。

这是一种方法吗?还有更好的方法吗?

感谢。

1 个答案:

答案 0 :(得分:3)

在我看来,直接抓取副本并直接修改可重复使用的应用程序并不是一个好方法。这样,当您重新使用应用程序获取新功能或修复其错误时,您无法轻松提取该应用程序的新版本。

更好的方法是通过覆盖它们来修改不适合您需要的部分,但保持应用程序完好无损。让我们以来自contrib的Django评论应用为例。如果在注释模型中没有所有必需的字段,则应该通过为继承原始注释的注释创建自定义模型来修改它,并以这种方式添加所需的功能。来自文档:

from django.contrib.comments.models import Comment

class CommentWithTitle(Comment):
    title = models.CharField(max_length=300)

现在,我已经修改了评论应用,我还可以更新评论应用的来源,而不必担心冲突。您不必添加能够使用它的东西,它在摆脱某些东西或更改东西时也能正常工作。

使用视图和模板,直接修改应用程序提供的模板有点不好。我更喜欢通过在指定模板的视图中使用关键字参数来实现此目的。如果我想用我自己的模板替换默认模板,我可以从url配置中指定新模板。现在,我不必触摸视图来更改模板,并且url配置清楚地表明我使用的是自己而不是使用默认模板。