Django没有检测到更少的文件

时间:2015-08-23 14:54:54

标签: python django less

我正在尝试在django中使用less,但出于某种原因,在尝试访问较少的文件时会得到404。我还有其他正常工作的css和js文件。我已经成功安装了django-static-precompiler并将static_precompiler放到了INSTALLED_APPS中。我还在STATICFILES_FINDERS

下添加了static_precompiler.finders.StaticPrecompilerFinder

我对STATIC_URLSTATIC_PRECOMPILER_ROOTSTATIC_ROOT

感到困惑

我在开发环境中这样做。

header.html中

{% load less %}
<link href="{% static "m1/less/universal.less" %}" rel="stylesheet/less" media="screen">

settings.py

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

1 个答案:

答案 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

因此,静态预编译器可以检测您的文件,编译它并将正确的路径放到已编译的文件中。