【问题标题】:Django static structureDjango 静态结构
【发布时间】:2011-10-28 01:55:51
【问题描述】:

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

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

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

现在我希望覆盖 django admin.. 所以我必须在 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,它会按预期将所有静态文件(包括管理文件)收集在“静态”目录中......(在主项目目录中)

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

我认为我忽略了显而易见的事情,因为我必须做的事情似乎是多余的

【问题讨论】:

  • 那么.. 你是否将文件实际存储的目录放入STATIC_DIRS 并将STATIC_ROOT 指向一个空目录,Django 可以在其中收集静态文件?

标签: python django


【解决方案1】:

本地开发,试试这个结构

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

您应该会看到样式表。

【讨论】:

    【解决方案2】:

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

    来自django's docs

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

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

    【讨论】:

      【解决方案3】:

      怎么样:

      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, 
      )
      

      【讨论】:

      • 不,这正是问题所在...配置不当:STATICFILES_DIRS 设置不应包含 STATIC_ROOT 设置
      • 使用此选项显式引发异常!
      猜你喜欢
      • 2011-05-04
      • 2013-02-05
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多