django将静态路径添加到当前url

时间:2014-03-22 14:42:51

标签: python django django-views django-staticfiles

我的静态文件位于应用程序目录的assets文件夹中。当我转到主页面(/)时,静态文件从/assets/完全加载。如果我转到/house/,它会尝试从/house/assets/加载静态文件,这显然会导致文件无法加载,因为它们不存在。

这可能与settings.py

相关
...
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates')
STATIC_PATH = os.path.join(BASE_DIR, 'assets')
STATIC_URL = os.path.join(BASE_DIR,'/assets/')

STATICFILES_DIRS = (
    STATIC_PATH,
)
TEMPLATE_DIRS = (
    TEMPLATE_PATH,
)
...

我正在使用以下内容加载模板中的静态文件:

<link href="assets/plugins/uniform/css/uniform.default.css" rel="stylesheet" type="text/css"/>

这是该应用程序部分的urls文件:

urlpatterns = patterns('',
    url(r'^$', views.dashboard, name='dashboard'),
    url(r'^house/$', views.house, name='house'),
)

这些是观点:

def dashboard(request):
    return render_to_response('index.html')

def house(request):
    return render_to_response('house.html')

过去一小时我一直在寻找解决方案但没有成功。我发现this post问了类似的事情,但没有帮助。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您应该从

更改模板中的HTML标记
<link href="assets/plugins/uniform/css/uniform.default.css"
      rel="stylesheet" type="text/css"/>

<link href="/assets/plugins/uniform/css/uniform.default.css"
      rel="stylesheet" type="text/css"/>

请注意相对网址前面的斜杠/。没有它,浏览器将假定assets目录是当前目录的子目录。有了它,它将始终从根目录开始。