Dol*_*lph 196 python django namespaces project-organization
我有一个相当复杂的"产品",我正准备使用Django构建.在这种情况下,我将避免使用术语"项目"和"应用程序",因为我不清楚它们在Django中的具体含义.
项目可以有很多应用程序.应用程序可以在许多项目之间共享.精细.
我不是在重新发明博客或论坛 - 我没有看到我的产品的任何部分在任何情况下都可以重复使用.直觉上,我称之为"应用程序".然后,我是否在一个"app"文件夹中完成所有工作?
如果是这样 ......就Django的project.app命名空间而言,我倾向于使用myproduct.myproduct,但当然这是不允许的(但我正在构建的应用程序是我的项目,我的项目是一个应用程序!).因此我相信也许我应该通过为每个"重要"模型构建一个应用程序来接近Django,但我不知道在我的模式中绘制边界的位置将其分成应用程序 - 我有很多具有相对复杂关系的模型.
我希望有一个共同的解决方案......
cla*_*ion 90
一旦您使用毕业startproject和startapp,没有什么可以从同一个Python包结合"项目"和"应用"阻止你.一个项目实际上只不过是一个settings模块,一个应用程序实际上只不过是一个models模块 - 其他一切都是可选的.
对于小型网站,如下所示是完全合理的:
site/
models.py
settings.py
tests.py
urls.py
views.py
Run Code Online (Sandbox Code Playgroud)
Ski*_*Ski 69
尝试回答问题:"我的申请做了什么?".如果你不能用一个句子回答,那么也许你可以将它拆分成几个具有更清晰逻辑的应用程序.
在我开始使用django之后很快就读到了这个想法,我发现我经常问这个问题,这对我很有帮助.
您的应用程序不必是可重用的,它们可以相互依赖,但它们应该做一件事.
小智 56
什么阻止你使用myproduct.myproduct?您需要实现的目标大致包括:
django-admin.py startproject myproduct
cd myproduct
mkdir myproduct
touch myproduct/__init__.py
touch myproduct/models.py
touch myproduct/views.py
Run Code Online (Sandbox Code Playgroud)
等等.如果我说views.py不必打电话会有帮助views.py吗?如果你可以在python路径上命名一个函数(通常是package.package.views.function_name),它将被处理.就那么简单.所有这些"项目"/"app"的东西都只是python包.
现在,你应该怎么做?或者说,我该怎么做?好吧,如果你创建一个显著一块可重复使用的功能,好比说一个标记编辑器,当你创建一个"顶级应用程序",它可能包含是widgets.py,fields.py,context_processors.py你可能希望所有的东西导入-等.
类似地,如果您可以在安装时以非常通用的格式创建类似博客的内容,则可以将其包装在具有自己的模板,静态内容文件夹等的应用程序中,并配置django项目的实例以使用该应用程序的内容.
没有严格的规则说你必须这样做,但这是框架的目标之一.事实上,所有内容,包括模板,允许您从一些共同的基础包括意味着您的博客应该适合任何其他设置,只需通过照顾自己的部分.
但是,为了解决您的实际问题,是的,没有任何说明您无法使用顶级项目文件夹.这就是应用程序的功能,如果你真的想要,你可以做到.但是,我倾向于不出于以下几个原因:
website.但是,在以后我可能想要为此站点开发原始功能.为了使它可移动(无论我是否做过),我倾向于创建一个单独的目录.这也意味着我可以通过从配置中取消链接并删除文件夹来删除所述功能,而不是从全局urls.py文件夹中删除正确的URL.简而言之,存在约定的原因与任何其他约定相同 - 当涉及到与您的项目合作的其他人时,它会有所帮助.如果我看到fields.py我立即期望它中的代码继承django的字段,而如果我看到inputtypes.py我可能不会那么清楚这意味着什么,而不看它.
Joo*_*ing 15
我发现以下博客文章对django应用程序和项目非常有用:
原则上,您可以通过django自由组织产品的源代码.
如果是这样......就Django的project.app命名空间而言,我倾向于使用product产品.myproduct,但当然这是不允许的
没有什么不允许的.它是你的项目,没有人限制你.建议保持一个合理的名称.
我没有看到我的产品的任何部分在任何情况下都可以重复使用.直觉上,我称之为"应用程序".然后,我是否在一个"app"文件夹中完成所有工作?
在一般的django项目中,有许多应用程序(contrib应用程序)可以在每个项目中使用.
我们假设您的项目只执行一项任务,并且只有一个应用程序(我将其命名main为项目围绕它并且几乎不可插入).该项目通常也会使用其他一些应用程序.
现在如果你说你的项目只使用了一个应用程序(INSTALLED_APPS='myproduct'),那么project定义项目的用途是什么project.app,我认为你应该考虑以下几点:
就应用程序中的大多数工作而言,我认为大多数django项目都是如此.
| 归档时间: |
|
| 查看次数: |
45955 次 |
| 最近记录: |