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

标签 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"/>

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

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询问类似的事情但没有帮助。任何帮助将不胜感激。

最佳答案

您应该更改模板中的 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"/>

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

关于python - django将静态路径添加到当前url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22579034/

相关文章:

python - 使用 Python Tkinter tkFileDialog 获取文件夹路径

python - Scikit learn + Pandas ValueError : shapes (1, 1) 和 (10,10) 未对齐

Python 无法在与其能找到的其他子模块相同的目录中找到子模块

django - 通过 django 跟踪打开的电子邮件

python - get_queryset 函数上的 Django :"RuntimeError: maximum recursion depth exceeded"

javascript - 如何在 django 关闭浏览器时终止 session

python - Pandas 0.10.1 到 0.11.0 .ix 方法

python - 删除(或预填)PayPal Express Checkout 的地址详细信息

python - Django:N个应用程序共享1个数据库

python - RuntimeError : Model class myapp. models.class 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中