所以,我和我的团队是Django开发的新手。在过去的几周里,我们一直在努力设计我们的项目结构,并且我们已经做了很多阅读,试图掌握这样做的最佳实践。
但是,我们仍然在努力寻找存储我们对所有应用程序通用的模板/静态文件的最佳方式。
让我详细说明我们迄今为止实施的结构:
root-folder/
app-1/
static/
app-1/
css/
js/
img/
templates/
base.html
base-app-1.html **extends base.html
app-2/
static/
app-2/
css
js
img
templates/
base.html **extends base.html at 'project-name' level
base-app-2.html **extends base.html
project-name/
collectstatic/
templates/
base.html
static/
base/
css
js
img
这个结构让我感到困惑的一件事是我们的顶级模板位于'project-name'级别。我想看到这个文件夹与我们的根级静态文件夹处于同一级别。
但是,我不想将根级静态文件夹内容移动到'project-name / collectstatic',因为我不希望该文件夹中的文件受版本控制。
我们意识到Django世界中没有明确的答案。但是,我们是否在正确的路线上?我们误解了什么吗?
我们得到的一些想法是:
答案 0 :(得分:1)
在Django中,最好依靠staticfiles'AppDirectoriesFinder
finder和模板的'app_directories.Loader`加载程序类来管理你的静态文件和模板。
这意味着您将拥有某种project.core
,project.base
或project.commons
应用程序,您将使用在整个项目中重复使用的基本模板和静态资源填充。< / p>
我假设您在project-name/collectstatic/
文件夹中的问题是它是在您受版本控制的路径上定义的STATIC_ROOT
。理想情况下,您可以将静态和媒体根移到项目的源之外。最简单的解决方案是将其移动到项目的顶级包旁边,在用于分发Python包的标准项目布局中,或者移动到Web服务器的预配置文档根目录。
无论哪种方式,这都应该将您本地生成的静态资源移到项目的Python包之外。