django - 让Django的views.py返回并执行javascript

标签 django django-views httpresponse

所以我正在使用 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/

相关文章:

python - Django DB 表名,复数 double s

django - 无法根据请求用户进行 autocomplete_light 过滤 taggit 标签

c++ - 从 cpp 中的 curl 检索响应文本

java - 为什么更新 HttpServletResponse 需要这么长时间? ( Apache 汤姆猫)

javascript - Express - 将 JavaScript 数据传递给客户端,无需 View 引擎

python - Django 1.10 : Setting admin. site.site_header 并使用默认的管理员登录 View

python - 对 django 应用程序进行单元测试的良好方法/设计

python - 在 Django 中使用图像字段更新记录?

django - 从管理页面更新模型后发送电子邮件 (Django)

python - Django:通过 send_mass_mail() 发送 HTML 电子邮件