繁体   English   中英

Django:提交表单后,浏览按钮消失

[英]Django : After submitting form, the browse button disappears

我正在处理 pdf 数据提取项目。那里我正在使用 django-forms 文件字段浏览 pdf 文件,然后在同一页面上显示提取的数据。一切正常,但问题是提交浏览的文件后,提取的数据出现在同一页面上,但浏览按钮消失。

表格.py

class browse(forms.Form):
    file = forms.FileField()

视图.py

def index(request):  
    if request.method == 'POST':  
        user = browse(request.POST, request.FILES)  
        if user.is_valid():  
            handle_uploaded_file(request.FILES['file'])#store file in upload folder
            path = "pdfextractor/static/upload/"+ str(request.FILES['file'])#path of selected file
            result = extract_data(path)#extract data from file
            context = {'result':result}
            return (render(request,'pdfextractor/index.html',context))
    else:  
        user = browse()  
        return render(request,"pdfextractor/index.html",{'form':user})

索引.html

<body>  
    <form method="POST" class="post-form" enctype="multipart/form-data">  
            {% csrf_token %}  
            {{ form.as_p }}  

            <input type="Submit" name="submit" value="Submit"/>
    </form>

    {% for key, value in result.items %}
    <h1>{{key}} : {{value}}</h1>
    {% endfor %}
</body>  

输出

在此处输入图片说明

在这里你可以看到浏览按钮消失了。现在我想要那个浏览按钮,这样用户就可以直接从这里浏览新文件在此处输入图片说明

在请求的POST部分,表单没有通过context填充,而在 else 子句中它正在完成。

您可以创建一个新表单并将其添加到上下文中:

context = {
    'result': result,
    'form': browse(),
}

但是,请注意,模板表单呈现在结果上方,因此它会在可见时将结果向下推到页面中。

这是因为您的表单未包含在您的if语句中,因此它变为None

def index(request):
    result = None
    form = None
    if request.method == 'POST':  
        form = browse(request.POST, request.FILES)  
        if form.is_valid():  
            handle_uploaded_file(request.FILES['file']) # store file in upload folder
            path = "pdfextractor/static/upload/"+ str(request.FILES['file'])#path of selected file
            result = extract_data(path) # extract data from file
    else:
        form = browse()
    context = {"form": form, "result": result}
    return render(request,'pdfextractor/index.html', context)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM