我试图理解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目录设置,否则我将得到错误它们不能相同...
我认为我忽视了显而易见的事实,因为我必须做的才能让它工作似乎是多余的
答案 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是静态文件在收集时放置的位置。
“您的项目可能还有静态资产与特定应用程序无关.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,
)