代码之家  ›  专栏  ›  技术社区  ›  wailer

Django可重用应用程序和Django项目结构

  •  1
  • wailer  · 技术社区  · 15 年前

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

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

    这是一条路吗?有更好的方法吗?

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  3
  •   af.    15 年前

    在我看来,直接获取副本和修改可重复使用的应用程序并不是一个好方法。这样,当你可以使用的应用获得新功能或者它的错误被修复时,你就不可能轻易地得到新版本的应用。

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

    from django.contrib.comments.models import Comment
    
    class CommentWithTitle(Comment):
        title = models.CharField(max_length=300)
    

    现在,我已经修改了评论应用程序,我还可以更新评论应用程序的源代码,而不必担心冲突。你不需要添加一些东西就可以使用它,当你摆脱一些东西或者改变一些东西的时候,它也能起到同样的作用。

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