Django-如何通知用户表单提交成功与否?

时间:2018-08-21 07:22:51

标签: python django django-forms

我创建了一个小表格,用户可以在其中输入他的名字并上传文本文件。现在,在用户单击上传之后,我想在屏幕上显示一条消息,如吐司或类似的东西,说明上传是否成功。我不确定要怎么做,因为提交表单后,用户只是被重定向到另一个页面。

侧面说明:我使用的是Django 1.7(我知道它很旧,但这是我必须与他人合作的项目)

这是我的html代码段,用户在其中填充字段:

<form action="{{ request.build_absolute_uri }}upload/" method="POST" enctype="multipart/form-data">
    <input id="Name" name="Name" type="text" placeholder="Name" style="width:100%">
    <br>
    <input type="file" name="file"/>
    <br />
    <input type="submit" value="Upload File" />
</form>

这是我的views.py:

def upload(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        handle_uploaded_file(request.FILES['file'], str(request.FILES['file']), name)
    return HttpResponse("Successful")


def handle_uploaded_file(file, filename, name):

    # if not os.path.exists('upload/'):
    #     os.mkdir('upload/')
    fileContent = ""
    with open('upload/' + filename, 'wb+') as destination:
        for chunk in file.chunks():
            fileContent += chunk
            # destination.write(chunk)

    currentDT = datetime.datetime.now()

    policy = Policy.create(name, currentDT, fileContent);
    policy.save()

1 个答案:

答案 0 :(得分:2)

您需要的是django messages framework

您只需

from django.contrib import messages
messages.add_message(request, messages.INFO, 'Form submitted successfully.')

在您的模板中

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

但是不要忘记在MIDDLEWARE和存储后端中进行设置