Django将静态路径添加到当前URL
我在应用程序目录下有一个叫 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')
我已经找了一个小时的解决办法,但都没有成功。我找到了一篇类似的问题,但对我没有帮助。任何帮助都将非常感谢。
1 个回答
4
你需要把模板中的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
文件夹是当前文件夹的一个子文件夹。而有了这个斜杠,它就会始终从根目录开始找。