Django将静态路径添加到当前URL

1 投票
1 回答
3008 浏览
提问于 2025-04-17 23:25

我在应用程序目录下有一个叫 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 文件夹是当前文件夹的一个子文件夹。而有了这个斜杠,它就会始终从根目录开始找。

撰写回答