我真的很纠结于整个应用程序的 idea .我读了很多教程和风格指南,我知道我应该try 创建专门的应用程序,只做一件事.当我看一些简单的教程项目时,这一切都是有道理的,但当它进入一个复杂的现实生活项目时,我发现自己无法确定应该如何在不同的应用程序之间划清界限.

其中一个问题是,我希望有一个(或多个)站点,让用户看到很多不同的东西.当遵循应用程序设计规则时,应该来自不同的应用程序.我怎么会意识到这样的事情呢?我的第一个 idea 是创建一个名为ui的应用程序,它只处理所有视图,实际上 bootstrap 到一个模板,所有其他应用程序都提供模型和帮助函数.但我担心ui应用程序会变得越来越大.

给你一个小例子:让我想有一个网站,用户可以做以下任务:

  • Select 一个主题
  • 为所选主题设置一些选项
  • 上传与其帐户关联的文件
  • 将一些上传的文件分配给主题
  • 录制一些与主题相关的音频

现在,我将创建三个应用程序:

  1. 主题(包含主题模型和一些相关模型)
  2. 资源(包含资源模型,处理上传)
  3. 音频(处理所有音频录制和处理工作)

但是,我需要一些mainui种应用程序来处理这些应用程序的交互方式,并创建实际的网站,在那里所有的应用程序都以某种方式参与其中.

那么,有什么"正确"的方法可以做到这一点吗?或者有什么我可以使用的模式吗?尽管我已经读了不少,但我也希望能链接到关于这个话题的好资源.

推荐答案

您只需要确保your struct 对you有意义.

没有必要为绑定到项目逻辑的另一部分的每个功能创建新的应用程序.

可重用的应用程序完全是另一回事,它们的代码在某种程度上应该不知道实现.

看一看Django's structure的灵感

您的示例可能的布局:

project_root/
    project/
        __init__.py
        settings.py
        urls.py
        templates/
            app1/  # override stuff
        static/
        media/
    app1/
        __init__.py
        admin/  # as a package
            __init__.py
            subjects.py
            resources.py
            # etc
        models/  # as a package
            subjects.py
            resources.py
            # etc
        managers/
            __init__.py
            subjects.py
            resources.py
            # etc
        services/
            __init__.py
            audio.py  # upload handler etc
        views/
            __init__.py
            subjects.py
        urls/
            __init__.py
            subjects.py
        templates/
            app1/
                subject_list.html  # override at project level
        static/
            app1/
                css/
                    subject.css  # override at project level
    app2/
        __init__.py
        models.py  # holds a Member model or whatever you require
    manage.py

Django相关问答推荐

Django逆转ForeignKey返回无

自定义公钥打破Django管理内联逻辑

如何在Django中将字段及其数据从一个模型添加到另一个模型?

Djnago admin中 Select 字段的自定义查询

Django没有显示变量

Django:我的上下文变量不能用于重复的for循环

如何在Django CMS中更新上下文

Django-表单(ModelForm)中的数据不保存在现有数据库中

在 Trunc 的 kind 属性中使用字段

Pymongo:搜索文档时忽略空输入值

如何将 ManyToManyField 与另一个 ManyToManyField 进行比较

Django ORM 查询优化问题

PyCharm:强制 Django 模板语法突出显示

Django 模型中的隐藏字段

Python 社区里的小马是怎么回事?

在 Mac OS X 上安装支持 JPEG 的 PIL

Django:何时使用 QuerySet 无

从 django/python 中的 request.POST 检索列表项

如何将 ManyToManyField 呈现为复选框?

Django 1.7 - 如何 suppress (1_6.W001)某些元素单元测试可能无法按预期执行.?