这是新的项目结构(来自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 ...)
或
顶级目录myproject/static
(myproject,myapp1,myapp2旁边)?
答案 0 :(得分:7)
STATIC_ROOT
与Python导入无关,因此完全取决于您。通常,设置中的myproject/static/
,因此os.path.join(PROJECT_ROOT, 'static/')
更容易。
更新,并在settings.py
中注明# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
根据您的结构,最好将poll
应用的静态文件放入poll/static/
。
答案 1 :(得分:2)
我同意@okm myproject/static/
是静态的好地方,但您也可以在myproject/polls/media
内的应用中存储图片,CSS和js。您必须配置django.contrib.staticfiles
app并使用命令将静态从media
复制到STATIC_ROOT
python manage.py collectstatic
这种方法的优势在于,您可以使用静态扩展您的应用,并且您的应用可以在其他项目中自由使用
答案 2 :(得分:1)
STATIC_ROOT
只是一个文件路径,staticfiles
contrib应用将收集并存放所有静态文件。这是一个收集物品的地方,就是这样。关键是该位置是临时存储,主要用于打包您的应用以进行部署。
staticfiles
应用会在static
中列出的任何应用中搜索要从INSTALLED_APPS
的任何目录中收集的项目,此外还会在STATICFILES_DIRS
中列出任何额外的文件路径位置}。
对于我的项目,我创建了一个deploy
目录,在其中我创建了一个用于静态文件的www
文件夹,以及仅在部署时使用的各种其他文件。该目录位于项目的顶层。
您可以将变量指向用户具有写权限的任何位置,它不需要位于项目目录中。