如何在Django中设置JavaScript文件的内容类型

时间:2012-08-04 19:03:55

标签: javascript django mime-types

我有一个Django应用程序,需要几个JavaScript文件。

在Chrome中,我收到错误“资源解释为脚本,但使用MIME类型text / html传输”。

enter image description here

AFAIK(请参阅2)为了解决这个问题,我需要配置Django,以便返回内容类型为“application / x-javascript”的JavaScript文件。

如何在Django中执行此操作?

更新:我按照丹尼尔罗斯曼的建议,找到了以下解决方案。

1)修改urls.py:

urlpatterns = patterns('',
    ...
    url(r'.*\.js$', java_script),
    ...
)

2)将以下功能添加到views.py:

def java_script(request):
    filename = request.path.strip("/")
    data = open(filename, "rb").read()
    return HttpResponse(data, mimetype="application/x-javascript")

4 个答案:

答案 0 :(得分:4)

我怀疑问题不是你认为的那样。实际上可能发生的是你的JS文件根本没有被提供:相反,正在发送Django错误页面。你需要找出原因。

答案 1 :(得分:2)

我在Django上使用附带的服务器以文本/纯文本形式提供JavaScript文件时遇到了问题,这在ES6模块上无法很好地工作。我发现here可以通过在settings.py中放置以下几行来更改文件扩展名关联:

#settings.py
if DEBUG:
    import mimetypes
    mimetypes.add_type("application/javascript", ".js", True)

和javascript文件现在用作application/javascript

答案 2 :(得分:0)

由于这不会阻止浏览器正确解释脚本,为什么这是一个问题? runserver仅用于开发(不是生产用途),因此不是一个完整的Web服务器。

您应该继续在开发中使用它,当您转向生产时,请为适当的静态文件配置您的Web服务器。

但是,如果 绝对必须 ,请使用开发服务器来提供静态文件;见how to serve static files

答案 3 :(得分:0)

对于Django,在视图中使用请求上下文:

return render_to_response('success.html', {'object': varobject},context_instance=RequestContext(request))