与Django模板中的路径混淆

时间:2015-03-01 12:34:26

标签: django

当我使用浏览器url(r'^consultar/$', 'rcb.core.views.consultar'),中的http://localhost:8000/consultar consultar.html文件找到jquery-1.11.2.min.js文件时,会显示以下信息:

Remote Address:127.0.0.1:8000
Request URL:http://localhost:8000/static/js/jquery-1.11.2.min.js
Request Method:GET
Status Code:200 OK

但是当我在浏览器url(r'^proposta/consultar/$', 'rcb.core.views.consultar'),中使用http://localhost:8000/proposta/consultar/时,consultar.html文件找不到jquery-1.11.2.min file.js。出现以下错误:

Remote Address:127.0.0.1:8000
Request URL:http://localhost:8000/proposta/static/js/jquery-1.11.2.min.js
Request Method:GET
Status Code:404 NOT FOUND

有人可以帮我修复代码以运行网址http://localhost:8000/proposta/consultar/

以下是文件和目录的代码和结构:

consultar.html

{% extends 'base.html' %}
....

base.html文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="../static/js/jquery-1.11.2.min.js" type="text/javascript"></script>
</head>
<body>
    {% block corpo %}{% endblock %}
</body>
</html>

views.py

def consultar(request):
    propostas_salvas=search()
    return render_to_response('consultar.html', { 'propostas_salvas' :  propostas_salvas}, context_instance=RequestContext(request))

我的文件和目录结构是:

rcb (Project)
    core (is the App)
        static
            js
                jquery-1.11.2.min.js
        template
            base.html
            consultar.html
        views.py
        ...
        ...
        ... 

1 个答案:

答案 0 :(得分:3)

您应该使用相对于您的域的javascript路径,而不是记录您的请求,因为对于每个文档,javascript的相对路径会有所不同。所以改变这一行:

    <script src="../static/js/jquery-1.11.2.min.js" type="text/javascript"></script>

成:

    <script src="/static/js/jquery-1.11.2.min.js" type="text/javascript"></script>

甚至更好,在模板中加载static并使用django中内置的静态文件管理:

    <script src="{% static "js/jquery-1.11.2.min.js" %}" type="text/javascript"></script>

这样您可以稍后更改设置中的STATIC_URL,django将更正静态文件的路径。即使它们位于不同的域(某些CDN或无cookie域仅用于静态文件)。