Django表单上传成功消息

时间:2015-08-01 20:45:17

标签: django file-upload

我有一个仪表板,可让您上传文件并显示您上传的文件。当您提交上传时,它会将您重定向回仪表板。问题是我想显示一条成功消息,说明您的文件已上传,但我无法弄清楚如何实现这一点,因为我只是将它们重定向到同一页面。以下是观点:

@login_required(login_url='/dashboard-login/')
def dashboard(request):
    current_user = request.user
    current_client = request.user.client

    files = ClientUploads.objects.filter(client=current_client)

    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            new_file = ClientUploads(client=current_client, file_upload = request.FILES['file_upload'])
            new_file.save()

        return HttpResponsePermanentRedirect('/dashboard/')
    else:
        form = UploadFileForm()

    data = {'form': form, 'client': current_client, 'files': files}
    return render_to_response('dashboard.html', data, context_instance=RequestContext(request))

我知道render_to_response已被弃用我会尽快将其切换出来。但是,如何显示成功消息?我不确定如何使用AJAX提交此消息,因此我不知道如何显示消息,因为它在您提交文件后刷新页面。

你能提供的任何解决方案或建议都会有所帮助。一个小例子可以帮助我解决这个问题。

我还想要包含一个进度条,我的研究需要一个带有进度条的自定义上传处理程序。我是否能够以相同的方式显示成功消息并添加进度条?如果是这样,任何人都可以提供一个这样的例子吗?

感谢您的任何意见,我现在已经被困在这里了。

1 个答案:

答案 0 :(得分:1)

views.py下的if request.method ==POST中,您可以添加messages.success(request, 'File upload successful'),使其类似于:

def dashboard(request):
    current_user = request.user
    current_client = request.user.client

    files = ClientUploads.objects.filter(client=current_client)

    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            new_file = ClientUploads(client=current_client, file_upload = req uest.FILES['file_upload'])
            new_file.save()
            messages.success(request, 'File upload successful')

然后,在您的模板中:

  <ul class="messages">
      {% for message in messages %}
      <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
      {% endfor %}
  </ul>

那应该做你想要的!