我有一个Django应用程序,需要几个JavaScript文件。
在Chrome中,我收到错误“资源解释为脚本,但使用MIME类型text / html传输”。
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")
答案 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))