[英]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.