【问题标题】:Uploading file in Django using Dropzone使用 Dropzone 在 Django 中上传文件
【发布时间】:2019-09-20 08:37:44
【问题描述】:

我正在使用 Django 开发网站,我想使用 HTML 模板中的 dropzone 框上传文件,然后将其发送到视图函数并在文件成功上传时发送一些消息 这是 HTML 模板中的代码(inputFile_pannel.html):

  <p>{{mess}}</p>
    <form   action="{% url 'upload_file' %}" enctype="multipart/form-data" class="dropzone" id="myDropzone" >
     {% csrf_token %}

       </form>

这是视图函数(uplosd_file):

@login_required
def upload_file(request):
uploaded_file_url=''
mess=''
if request.method == 'POST' and request.FILES['file']:
    myfile = request.FILES['file']
    fs = FileSystemStorage()
    filename = fs.save(myfile.name, myfile)
    uploaded_file_url = fs.url(filename)
    mess='The file is uploade successfully, you can check the status in your pannel'
    return render(request, 'app/inputFile_pannel.html', {
        'mess':mess
    })

return render(request, 'app/inputFile_pannel.html', {
    'mess':mess
})

但是message变量没有出现在网页上,有人能说一下是什么问题吗?

【问题讨论】:

  • 似乎您的 if 语句没有正确触发。你确定if里面的代码在运行吗?
  • 是的,它正在运行,因为文件已上传并保存在路径中
  • 即使我尝试将页面重定向到另一个网页,如果语句运行为 true 但它不起作用:( 文件已正确上传,但块的其余部分不起作用
  • 我真的很困惑,这可能是因为 dropzone 选项,而回发导致了这个问题,有人知道吗?
  • 那么如果你将mess='' 更改为mess='something',模板中会出现“某事”吗?

标签: django dropzone.js


【解决方案1】:
<form   action="{% url 'upload_file' %}" enctype="multipart/form-data" class="dropzone" id="myDropzone" **method="POST"**>

您必须使您的方法 POST... 否则您的请求将是 GET。

【讨论】:

  • 当我更改 forceFallback:false 选项时,它可以正常工作,但它不再是 dropzone,dropzone 的形状更改为文件常规输入和提交按钮
  • 似乎第一个渲染没有运行,因为当我更改模板页面时,它仍然保留在同一个模板中,即使我将第二个渲染放在 else 块中(如果它不是post方法)它不起作用:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多