获取Django views.py 返回并执行javascript [英] Get Django views.py to return and execute javascript
问题描述
所以我正在处理 django 和文件上传,我需要一个 javascript 函数在文件上传后执行.我的 views.py 中有一个文件上传处理程序,如下所示:
So I'm working with django and file uploads and I need a javascript function to execute after the file has been uploaded. I have a file upload handler in my views.py which looks like this:
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 类放在我的 views.py 代码中.如下所示:
And I found a django snippet from http://djangosnippets.org/snippets/341/ and I put the HttpJavascriptResponse class in my views.py code. It looks as follows:
class HttpJavascriptResponse(HttpResponse):
def __init__(self,content):
HttpResponse.__init__(self,content,mimetype="text/javascript")
但是,当我上传文件时,浏览器会简单地呈现parent.Response_OK();"在屏幕上而不是实际执行 javascript.Chrome 给了我警告:资源被解释为文档,但使用 MIME 类型文本/javascript 传输"
However, when I upload a file the browser simple renders "parent.Response_OK();" on the screen instead of actually executing the javascript. And Chrome gives me the warning: "Resource interpreted as Document but transferred with MIME type text/javascript"
有没有办法让views.py来执行脚本?
Is there anyway to get views.py to execute the script?
推荐答案
我相信这会奏效.
return HttpResponse("<script>parent.Response_OK();</script>")
但是,您可能会考虑在这种情况下返回成功(200)状态代码,然后将父级中的一些 javascript 附加到此子级的加载事件,并根据返回状态代码进行分支.这样你就可以分离视图渲染代码和视图行为代码.
However, you might think about returning a success (200) status code in this case, and then having some javascript in parent attach to the load event of this child, and branch based on return status code. That way you have a separation of view rendering code and view behavior code.
这篇关于获取Django views.py 返回并执行javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!