我正在尝试在django中使用less,但出于某种原因,在尝试访问较少的文件时会得到404。我还有其他正常工作的css和js文件。我已经成功安装了django-static-precompiler
并将static_precompiler放到了INSTALLED_APPS中。我还在STATICFILES_FINDERS
static_precompiler.finders.StaticPrecompilerFinder
我对STATIC_URL
,STATIC_PRECOMPILER_ROOT
,STATIC_ROOT
我在开发环境中这样做。
{% load less %}
<link href="{% static "m1/less/universal.less" %}" rel="stylesheet/less" media="screen">
MEDIA_ROOT = "uploads/"
MEDIA_URL = "uploads/"
STATIC_URL = '/static/'
STATIC_PRECOMPILER_ROOT = '/m1/static/m1/less'
INSTALLED_APPS = (
'm1',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.sitemaps',
'south',
'social.apps.django_app.default',
'django.contrib.redirects',
'static_precompiler',
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
'static_precompiler.finders.StaticPrecompilerFinder',
)
答案 0 :(得分:1)
所有_ROOT
目录都与文件系统有关,所有_URL
目录都是网址,就像评论中提到的henrikstroem一样。
每个_URL
目录必须与http服务器端的等效_ROOT
目录相匹配,例如,您的网络服务器配置为提供来自地址/your/app/static/
的所有文件{ {1}},这意味着您应该像这样配置http://example.com/static/
和STATIC_ROOT
:
STATIC_URL
请记住,所有STATIC_ROOT = "/your/app/static/" # this path must be absolute
STATIC_URL = "/static/" # this url can be relative to your domain or can be full url to your static directiory
目录必须是绝对的。你也不应该硬编码完整路径,但最好使用os.path函数让python构建相对于你的设置文件的路径。
默认情况下,_ROOT
将等于STATIC_PRECOMPILER_ROOT
并且没问题,因为默认情况下,静态预编译器会将所有已编译的文件放入名为STATIC_ROOT
的子目录中,因此它赢了&# 39; t与您拥有的其他静态文件冲突。还要记住,静态预编译器不会自己提供这些文件,因此最好将它们保存为静态文件。
因此,请尝试从您的设置中删除COMPILED
并修复其他路径,如上所述。
同样在你的标题中你应该使用:
STATIC_PRECOMPILER_ROOT
因此,静态预编译器可以检测您的文件,编译它并将正确的路径放到已编译的文件中。