【发布时间】:2017-10-04 22:47:59
【问题描述】:
我已经阅读了许多教程,构建了一些应用程序,甚至阅读了 Django 的一位创建者的书。但我对“正确”的目录结构感到困惑。
人们似乎总是得到一棵看起来像这样的树(顶部有一个虚拟环境):
venvdir
|
+---manage.py
|
+---mysitedir
| +--settings.py
| +--urls.p
| +--staticfiles (where collectstatic puts everything)
|
+---myapp1dir
| +--views.py
| +--models.py
| +--staticdir
| +---static-objects-tree...
让我感到困惑的是
os.path.abspath(__file__)
指向“mysitedir”(参考资料说它总是指向带有 settings.py 的目录)。
大概的想法是整个“网站”下有一个或多个“应用程序”,尽管我从未见过这样做过。
首先,这是正确的吗?
其次,是否有一些令人信服的理由(或者我做错了)使得“应用程序”不位于“mysitedir”下方?这似乎更有意义并保持模块化。
Django 执行诸如遍历整个树以查找静态文件的方式似乎很奇怪。在 settings.py 中列出“应用程序”似乎也不合逻辑,并且 - 再一次 - Django 需要上下遍历才能找到这些文件(而不仅仅是能够查看 os.path 指定的目录.abspath(文件).
【问题讨论】:
-
在某些方面将 venv 放在哪里更多地取决于您的 devops 和您打算在哪里构建。如果你通过 elasticbeanstalk 在 AWS 中构建,我通常会将它放在本地的父级中,这样我就不需要 .gitignore 了。如果您使用 docker 进行部署,您可能会以不同的方式放置。不要过度使用应用程序和模型。从历史上看,这使得迁移更加艰难。 medium.com/cs-math/…
-
从 1.3 开始使用 Django,他们一直在更改目录结构(或者他们确实如此)。希望他们已经决定这个不会改变。
标签: django python-3.x heroku