在我看来,直接获取副本和修改可重复使用的应用程序并不是一个好方法。这样,当你可以使用的应用获得新功能或者它的错误被修复时,你就不可能轻易地得到新版本的应用。
更好的方法是修改那些不适合你需要的部分,覆盖它们,但是保持应用程序的完整性。让我们以Django的Contrib评论应用程序为例。当您在注释模型中没有所有必需的字段时,您应该通过为继承原始注释的注释创建自定义模型来修改它,并以这种方式添加必需的特性。来自文档:
from django.contrib.comments.models import Comment
class CommentWithTitle(Comment):
title = models.CharField(max_length=300)
现在,我已经修改了评论应用程序,我还可以更新评论应用程序的源代码,而不必担心冲突。你不需要添加一些东西就可以使用它,当你摆脱一些东西或者改变一些东西的时候,它也能起到同样的作用。
对于视图和模板,直接修改应用程序提供的模板有点糟糕。我更喜欢通过对指定模板的视图使用关键字参数来实现这一点。如果我想用自己的模板替换默认模板,我可以从URL配置中指定新模板。现在,我不需要触摸视图来更改模板,URL配置清楚地表明我使用的是自己的模板,而不是默认模板。