这是新的项目结构(来自Django 1.4发行说明) .
myproject
|-- manage.py
|-- myproject
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- polls
|-- __init__.py
|-- models.py
|-- tests.py
`-- views.py
我不确定的是我是否应该将STATIC_ROOT指向
myproject/myproject/static/
(与settings.py,urls.py ...一起)
OR
顶级目录 myproject/static
(myproject,myapp1,myapp2旁边)?
3 回答
STATIC_ROOT
与Python导入无关,因此完全取决于您 . 通常,myproject/static/
,因此设置中的os.path.join(PROJECT_ROOT, 'static/')
更容易 .更新为San4ez建议,并在settings.py中注释
根据您的结构,最好将
poll
app的静态文件放入poll/static/
.我同意@okm,
myproject/static/
是静态的好地方,但你也可以在myproject/polls/media
中将图像,css和js存储在你的应用程序中 . 比你必须配置django.contrib.staticfiles
app并使用命令将静态从media
复制到STATIC_ROOT这种方法的优点是,您可以使用静态扩展您的应用程序,您的应用程序可以在其他项目中自由使用
STATIC_ROOT
只是一个文件路径,staticfiles
contrib应用程序将收集并存放所有静态文件 . 这是一个收集物品的地方,就是这样 . 关键是这个位置是 temporary storage ,主要用于打包应用程序进行部署 .staticfiles
应用程序在INSTALLED_APPS
中列出的任何应用程序中搜索要从任何名为static
的目录中收集的项目,此外还会在STATICFILES_DIRS
中列出任何额外的文件路径位置 .对于我的项目,我创建了一个
deploy
目录,在其中我创建了一个用于静态文件的www
文件夹,以及仅在部署时使用的各种其他文件 . 该目录位于项目的顶层 .您可以将变量指向用户具有写权限的任何位置,它不需要位于项目目录中 .