想知道如何在django中构建这个

时间:2013-12-17 13:28:59

标签: django django-models django-project-architect

我现在正致力于一项大型django项目。

包含许多主题中心和书籍以及其他媒体资料和作者资料以及普通用户资料的巨大话题门户,他们也可以拥有作者资料..

现在我做的是:

一个django应用程序,照常模板文件夹,现在模板数量变得越来越大,因为我创建了模板..

我从未体验过在一个项目中拥有多个应用程序..

有人可以告诉我,如果我正在做什么是好的,或者我应该去多个应用程序?

或者如果我采用不同的方式:何时在一个项目中拥有多个应用程序是否有意义?

提前致谢

2 个答案:

答案 0 :(得分:2)

Django因拥有多个应用而蓬勃发展。 1个用户注册应用程序,1个配置文件应用程序,1个用于评论的应用程序,1个用于博客帖子的应用程序等。

正如您所指出的那样,在一个应用程序中执行所有操作会很快导致混乱。 Django的最佳方法是创建许多非常具体的应用程序。如果您愿意,这还允许您拥有更多可在其他项目中重复使用的应用程序。

Django项目有许多可能的“结构”。我会采用最模块化的方法。对于每一项功能,只要问问自己:这是否属于另一个应用程序?如果答案是肯定的,那么你最有可能为它创建一个单独的应用程序。

例如,相同的博客帖子应用程序可以在多个网站上使用,您只需要更改模板以使其适合页面的新布局/设计。所有的逻辑应该大致相同。博客文章的逻辑不应与查看个人资料或其他内容的逻辑联系起来。

示例:对于评论应用,模型可能如下所示:

from django.db import models

from profile.models import Profile
from blog.models import Blog

class Comment(models.Model):
    user = models.ForeignKey(Profile, related_name='comments')
    blog = models.ForeignKey(Blog, related_name='comments')
    message = models.CharField(max_length=200)

答案 1 :(得分:1)

你可以拥有不依赖于其他应用程序的核心应用程序(很可能就是这样)

  • 核心应用程序,包含您的核心模板视图和模型(
  • 帐户使用身份验证模板和模型
  • 有用的工具应用

和使用上述

的“应用程序”应用程序
  • topiccenter1 - 特定模板,视图和模型
  • topiccenter2 - 特定模板,视图和模型

一个很好的结构开始是来自“Django的两个勺子”的模板 https://github.com/twoscoops/django-twoscoops-project

“谢谢你,非常好的指导。我想知道因为所有的模型都有关系,如果我将它们分成多个应用程序,我不会破坏这种关系吗?”

您应该可以跨应用程序划分模型 - 阅读:

Define ManyToMany relation in another application in Django

Django relationships between apps: How to keep apps separate?

相关问题