所以我正在使用 django 和文件上传,我需要一个 javascript 函数在文件上传后执行。 我的views.py中有一个文件上传处理程序,如下所示:
def upload_file(request):
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
for f in request.FILES.getlist('fileAttachments'):
handle_uploaded_file(f)
return HttpJavascriptResponse('parent.Response_OK();')
else:
return HttpResponse("Failed to upload attachment.")
我从 http://djangosnippets.org/snippets/341/ 找到了一个 django 片段我将 HttpJavascriptResponse 类放入 view.py 代码中。它看起来如下:
class HttpJavascriptResponse(HttpResponse):
def __init__(self,content):
HttpResponse.__init__(self,content,mimetype="text/javascript")
但是,当我上传文件时,浏览器简单地呈现“parent.Response_OK();”在屏幕上而不是实际执行 JavaScript。 Chrome 给我警告:“资源解释为文档,但使用 MIME 类型 text/javascript 传输”
有没有办法让views.py执行脚本?
最佳答案
更好的方法是将 mime 传递给 HttpResponse 对象。
参见文档:https://docs.djangoproject.com/en/3.2/ref/request-response/#django.http.HttpRequest.content_type .
return HttpResponse("parent.Response_OK()", content_type="application/x-javascript")
注意 - Django 的某些早期版本使用 mimetype
而不是 content_type
:
return HttpResponse("parent.Response_OK()", mimetype="application/x-javascript")
关于django - 让Django的views.py返回并执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964244/