python函数myproduct_python – Django:“projects”vs“apps”
什么是停止你使用myproduct.myproduct?你需要实现的大致包括这样做:
django-admin.py startproject myproduct
cd myproduct
mkdir myproduct
touch myproduct/__init__.py
touch myproduct/models.py
touch myproduct/views.py
等等。如果我说views.py不必被称为views.py会有帮助吗?假设你可以在python路径上命名一个函数(通常是package.package.views.function_name),它将被处理。就那么简单。所有这些“项目”/“应用程序”的东西只是python包。
现在,你应该怎么做呢?或者,我怎么可能呢?好吧,如果你创建一个重要的可重用的功能,如说标记编辑器,那是当你创建一个“顶级应用程序”,可能包含widgets.py,fields.py,context_processors.py等 – 所有你可能想进口。
同样,如果你可以创建一个类似博客的格式,在跨安装的通用格式,你可以包装它在一个应用程序,它自己的模板,静态内容文件夹等,并配置一个django项目的实例使用应用程序的内容。
没有硬而快的规则,说你必须这样做,但它是框架的目标之一。事实上,一切,模板包括,允许你包括从一些常见的基础意味着你的博客应该适应贴合到任何其他设置,只是通过看自己的部分。
然而,为了解决你的实际关注,是的,没有说你不能使用顶级项目文件夹。这是应用程序做的,你可以做到,如果你真的想。然而,我不倾向于,有几个原因:
> Django的默认设置不会这样做。
>通常,我想创建一个主要的应用程序,所以我创建一个,通常称为网站。然而,在稍后的日期,我可能想为这个网站开发原始功能。为了使其可移动(无论我是否做过),我倾向于然后创建一个单独的目录。这也意味着我可以删除该功能只是通过解除该包从配置和删除文件夹,而不是复杂从全局urls.py文件夹中删除正确的URL。
>很多时候,即使我想做一些独立的东西,它需要某个地方住,而我照顾它/使它独立。基本上是上面的情况,但对于东西我打算做通用。
>我的顶级文件夹经常包含一些其他东西,包括但不限于wsgi脚本,sql脚本等。
> django的management extensions依赖于子目录。因此,适当地命名包是有意义的。
总之,有一个约定的原因是与任何其他约定相同 – 它有助于其他人与您的项目工作。如果我看到fields.py我立即期望代码在它的子类django的字段,而如果我看到inputtypes.py我可能不清楚什么意思,没有看到它。