Django静态结构

时间:2011-08-16 13:28:09

标签: python django

我试图理解django 1.3试图追求的静态结构:

我有一个具有这种结构的项目:

Project
   someapp
      static
          someapp
             css
             etcetera
      models.py
      views.py
      urls.py
   urls.py
   manage.py
   settings.py

现在我想覆盖django管理员..所以我必须在settings.py中设置这些设置,我在下面做了(basepath是当前目录的快捷方式路径):

# 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/"
STATIC_ROOT = BASE_PATH+'/static/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

如果我使用manage.py命令collectstatic,它会按预期收集目录'static'中的所有静态文件(包括管理文件)...(在主项目目录中)

然而,在我将该目录添加到STATICFILES_DIRS元组之前,它的内容尚未提供,但是我必须更改STATIC_ROOT目录设置,否则我将得到错误它们不能相同...

我认为我忽视了显而易见的事实,因为我必须做的才能让它工作似乎是多余的

3 个答案:

答案 0 :(得分:10)

对于本地开发,请尝试此结构

Project
  Project (project directory with settings.py etc..)
       stylesheets
  someapp
  static
      base.css

settings.py

import os
ROOT_PATH = os.path.dirname(__file__)
STATIC_ROOT = os.path.join(ROOT_PATH, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(ROOT_PATH, 'stylesheets'),
)

使用python manage.py runserver运行本地服务器,然后转到http://localhost:8000/static/base.css

你应该看到样式表。

答案 1 :(得分:4)

STATICFILES_DIRS是用于在项目中声明非特定于应用程序的静态文件的设置。 STATIC_ROOT是静态文件在收集时放置的位置。

来自django's docs

“您的项目可能还有静态资产与特定应用程序无关.STATICFILES_DIRS设置是文件系统目录的元组,用于在加载静态文件时进行检查。这是一个默认为空的搜索路径。 STATICFILES_DIRS docs如何扩展这个附加路径列表。“

“将STATIC_ROOT设置设置为指向您在使用collectstatic管理命令时收集静态文件的文件系统路径。”

答案 2 :(得分:-5)

怎么样:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    STATIC_ROOT, 
)