Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中设置JavaScript文件的内容类型_Javascript_Django_Mime Types - Fatal编程技术网

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

如何在Django中设置JavaScript文件的内容类型,javascript,django,mime-types,Javascript,Django,Mime Types,我有一个Django应用程序,它需要几个JavaScript文件 在Chrome中,我得到错误“资源被解释为脚本,但使用MIME类型text/html传输” 为了解决这个问题,我需要配置Django,以便返回内容类型为“application/x-JavaScript”的JavaScript文件 在Django我怎么做 更新:我听从了丹尼尔·罗斯曼的建议,找到了以下解决方案 1) 修改URL.py: urlpatterns = patterns('', ... url(r'.*

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

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

为了解决这个问题,我需要配置Django,以便返回内容类型为“application/x-JavaScript”的JavaScript文件

在Django我怎么做

更新:我听从了丹尼尔·罗斯曼的建议,找到了以下解决方案

1) 修改URL.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")

既然这并不妨碍浏览器正确解释脚本,为什么会出现问题<代码>运行服务器仅用于开发(不用于生产),因此不是一个成熟的web服务器

您应该继续在开发中使用它,并且当您转到生产环境时,为静态文件适当地配置您的Web服务器


但是,如果您绝对必须使用开发服务器来提供静态文件;看。

我怀疑问题不是你想的那样。实际上可能发生的情况是,根本没有提供JS文件:而是发送Django错误页面。您需要找出原因。

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

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

我对Django在包含的服务器上以文本/纯文本的形式提供javascript文件有一个问题,它在ES6模块中工作得不太好。我发现您可以通过在settings.py中放置以下行来更改文件扩展名关联:

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

javascript文件现在被用作
application/javascript

我能很快找到的最佳副本的可能副本,但实际上。。。您正在用Python设置标题和内容类型。Django与这个AFAIKAt无关,有人说“这意味着服务器正在发送一个内容类型为text/plain的Javascript HTTP响应。”。我使用的是Django的内置web服务器(python manage.py runserver),因此我假设我必须配置Django的内置服务器来解决这个问题。我对python或Django的了解不够,无法对这项技术发表评论,但最后,您需要找到一种方法,在请求时,这些uri会给出正确的头类型。如果Django有或需要这些文件,好的,如果没有,是什么服务于这些文件?这就是问题所在。在同一页上,有人写道“AddType text/javascript.js”将修复Apache服务器上的问题(所有扩展名为.js的文件都将具有“text/javascript”内容类型)。Django的内置web服务器需要类似的东西。1)这是一个问题,因为我的websocket代码不工作,Chrome的“网络”控制台中出现的唯一错误消息是“Uncaught SyntaxError:错误很可能与未正确返回JSON有关的意外标记。我如何在Django中尽可能少地修复它?修复正在返回JSON的视图,以确保它设置了正确的mimetype
application/JSON
,而不是
application/javascript