首页 文章

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

提问于
浏览
7

这是新的项目结构(来自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 回答

  • 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 app的静态文件放入 poll/static/ .

  • 2

    我同意@okm, myproject/static/ 是静态的好地方,但你也可以在 myproject/polls/media 中将图像,css和js存储在你的应用程序中 . 比你必须配置 django.contrib.staticfiles app并使用命令将静态从 media 复制到STATIC_ROOT

    python manage.py collectstatic
    

    这种方法的优点是,您可以使用静态扩展您的应用程序,您的应用程序可以在其他项目中自由使用

  • 1

    STATIC_ROOT 只是一个文件路径, staticfiles contrib应用程序将收集并存放所有静态文件 . 这是一个收集物品的地方,就是这样 . 关键是这个位置是 temporary storage ,主要用于打包应用程序进行部署 .

    staticfiles 应用程序在 INSTALLED_APPS 中列出的任何应用程序中搜索要从任何名为 static 的目录中收集的项目,此外还会在 STATICFILES_DIRS 中列出任何额外的文件路径位置 .

    对于我的项目,我创建了一个 deploy 目录,在其中我创建了一个用于静态文件的 www 文件夹,以及仅在部署时使用的各种其他文件 . 该目录位于项目的顶层 .

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

相关问题