怎样才能阻止你使用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的默认设置不会这样做。
通常,我想创建一个主应用程序,所以我创建了一个,通常称为website。不过,在以后的日子里,我可能只想开发这个网站的原始功能。为了使它可移动(无论我是否曾经这样做过),我倾向于创建一个单独的目录。这也意味着我可以通过从配置中取消该包的链接并删除该文件夹来删除该功能,而不是复杂地从全局url.py文件夹中删除正确的url。
很多时候,即使我想让某个东西独立,它也需要有地方住,而我要照顾它/使它独立。基本上是上面的情况,但是对于那些我确实打算做的东西。
我的顶级文件夹通常包含一些其他内容,包括但不限于wsgi脚本、sql脚本等
django的management extensions依赖于子目录。所以恰当地命名包是有意义的。
简而言之,有一个约定的原因与任何其他约定都是一样的——当涉及到处理您的项目的其他人时,它会有所帮助。如果我看到fields.py,我立即希望其中的代码成为django字段的子类,而如果我看到inputtypes.py,我可能不太清楚这意味着什么,而不去看它。