什么能阻止你使用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
.然而,在以后的日子里,我可能想要开发这个网站的原始功能.为了使其可删除(无论我是否这样做),我倾向于创建一个单独的目录.这也意味着我只需从配置中取消该包的链接并删除文件夹,就可以删除上述功能,而不是复杂地从全局urls.py文件夹中删除正确的URL.
- 很多时候,即使我想让某个东西独立,它也需要在我照顾它/让它独立的同时住在某个地方.基本上是上述情况,但对于我确实想做的通用的东西.
- 我的顶层文件夹通常包含一些其他内容,包括但不限于WSGI脚本、SQL脚本等.
- Django的management extensions依赖于子目录.因此,对包进行适当的命名是有意义的.
简而言之,有一个约定的原因与任何其他约定都是一样的-当涉及到其他使用您的项目的人时,它会有所帮助.如果我看到fields.py
,我马上就会认为其中的代码是Django字段的子类,而如果我看到inputtypes.py
,如果不看它,我可能不太清楚这意味着什么.