在单个项目中重用 Django 应用程序

Gar*_*ers 5 python django

在尝试在开发过程中节省尽可能多的时间并使尽可能多的应用程序可重用时,我遇到了一些障碍。在一个网站中,我有一个博客应用程序和一个新闻应用程序,它们基本上是相同的,显然,如果我可以制作一个应用程序并在必要时扩展它,然后让它作为两个具有单独数据库的单独应用程序运行,那么显然会更容易, ETC。

为了澄清,请考虑以下内容:假设来说,我想要一个单一的通用 news_content 应用程序,包含所有相关的模型、视图、url 结构和模板标签,然后我可以根据需要多次包含和扩展它们到一个项目中。

其分解如下:

news_content/
    templatetags/
        __init__.py
        news_content.py
    __init__.py
    models.py (defines generic models - news_item, category, etc.)
    views.py (generic views for news, archiving, etc.)
    urls.py
    admin.py
Run Code Online (Sandbox Code Playgroud)

有没有办法以不同的名称多次将此应用程序包含在项目中?我觉得这应该是显而易见的,但我只是没有考虑清楚。有人有这方面的经验吗?

我很感激人们能提供的任何建议。谢谢。

S.L*_*ott 3

博客和新闻之间的实际区别是什么?也许这种差异应该成为博客/新闻应用程序的一部分,并且您只需将其包含一次。

如果您有一个包含博客条目的博客页面和一个包含新闻条目的新闻页面,唯一的区别是数据库中的一个字段(kind_of_item =“blog”与 kind_of_item =“news”),那么也许您有这个。

urls.py

(r'^/(?P<kind>blog)/$', 'view.stuff'),
(r'^/(?P<kind>news)/$', 'view.stuff'),
Run Code Online (Sandbox Code Playgroud)

视图.py

def stuff( request, kind ):
    content= news_blog.objects.filter( kind=kind )
    return render_to_response( kind+"_page", { 'content': content } )
Run Code Online (Sandbox Code Playgroud)

也许您不需要同一个应用程序两次,但需要扩展应用程序来处理这两个用例。