Django 1.4中的静态文件夹结构?

时间:2012-04-16 04:34:47

标签: python django convention directory-structure django-1.4

这是新的项目结构(来自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旁边)?

3 个答案:

答案 0 :(得分:7)

STATIC_ROOT与Python导入无关,因此完全取决于您。通常,设置中的myproject/static/,因此os.path.join(PROJECT_ROOT, 'static/')更容易。

San4ez建议

更新,并在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文件夹,以及仅在部署时使用的各种其他文件。该目录位于项目的顶层。

您可以将变量指向用户具有写权限的任何位置,它不需要位于项目目录中。