python - 如何提交修改后的表格?
问题描述
我正在尝试提交表单,但我总是失败,因为代码总是遇到这个“if form.prekes_nuotrauka.data”条件。如果我不想更改我的照片,只有名称和内容会给我错误,我希望代码会点击 else 块但它失败了。这个表格已经创建好了,我只想修改它。如何在不上传更多照片的情况下更改名称?
@app.route("/app_main_page/preke/<int:p_id>", methods=["GET", "POST"])
@login_required
def viena_preke(p_id):
global image
form = UpdateItemForm()
preke = Preke.query.get(p_id)
a = preke.items
if form.validate_on_submit():
if form.prekes_nuotrauka.data:
for prek in form.prekes_nuotrauka.data:
file = save_pict(prek)
image = url_for('static', filename='profile_pictures/' + file)
prekes_ft = PrekesNuotraukos(prekes_nuotraukos=image, PrekesFT=preke)
db.session.add(prekes_ft)
preke.apibudinimas = form.apibudinimas.data
preke.pavadinimas = form.pavadinimas.data
db.session.commit()
flash("Photos have been updated", "success")
return redirect(url_for("home"))
else:
preke.apibudinimas = form.apibudinimas.data
preke.pavadinimas = form.pavadinimas.data
db.session.commit()
flash("Jusu preke buvo atnaujinta", "success")
return redirect(url_for("home"))
else:
form.pavadinimas.data = preke.pavadinimas
form.apibudinimas.data = preke.apibudinimas
return render_template("VienaPreke.html", title="Viena preke", preke=preke, form=form, items=a)
HTML 部分
{%extends "layout.html"%}
{%block content%}
<div class="all-in-one">
<div class="content-section">
<form method="post" action="" enctype="multipart/form-data">
{{form.hidden_tag()}}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Prekes informacija</legend>
{%if preke.author == current_user%}
<div>
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#deleteModal">Delete</button>
</div>
{%endif%}
<div class="form-group">
{{form.pavadinimas.label(class="form-control-label")}}
{%if form.pavadinimas.errors%}
{{form.pavadinimas(class="form-control form-control-lg is-invalid")}}
<div class="invalid-feedback">
{%for error in form.pavadinimas.errors%}
<span>{{error}}</span>
{%endfor%}
</div>
{%else%}
{{form.pavadinimas(class="form-control form-control-lg")}}
{%endif%}
</div>
<div class="form-group">
{{form.apibudinimas.label(class="form-control-label")}}
{%if form.apibudinimas.errors%}
{{form.apibudinimas(class="form-control form-control-lg is-invalid")}}
<div class="invalid-feedback">
{%for error in form.apibudinimas.errors%}
<span>{{error}}</span>
{%endfor%}
</div>
{%else%}
{{form.apibudinimas(class="form-control form-control-lg")}}
{%endif%}
</div>
<div class="form-group">
<div id="secondary-images">
{{form.prekes_nuotrauka.label()}}
{{form.prekes_nuotrauka(class="form-control-file")}}
{%for itema in items%}
<a href="{{itema.prekes_nuotraukos}}">
<img class="images" src="{{itema.prekes_nuotraukos}}">
</a>
{%endfor%}
{%if form.prekes_nuotrauka.errors%}
{%for error in form.prekes_nuotrauka.errors%}
<span class="text-danger">{{error}}</span>
{%endfor%}
{%endif%}
</div>
</div>
</fieldset>
{% if preke.author == current_user%}
<div class="form-group">
{{form.submit(class="btn btn-outline-info")}}
</div>
{%endif%}
</form>
<div class="carousel-and-images">
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
{%for itema in items%}
<li data-target="#carouselExampleIndicators" data-slide-to="{{loop.index}}" class="active"></li>
{%endfor%}
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="{{items[0].prekes_nuotraukos}}" alt="First slide">
</div>
{%for itema in items%}
<div class="carousel-item">
<img class="d-block w-100" src="{{itema.prekes_nuotraukos}}" alt="Second slide">
</div>
{%endfor%}
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLongTitle" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<form action="{{url_for('delete_Preke', p_id=preke.id)}}" method="post">
<input class="btn btn-danger" type="submit" value="Delete">
</form>
</div>
</div>
</div>
</div>
{%endblock%}
我收到的错误消息
PIL.UnidentifiedImageError: cannot identify image file <FileStorage: '' ('application/octet-stream')>
解决方案
推荐阅读
- reactjs - 在转换错误期间对更新做出反应,我没有在渲染中更新状态
- angular - 并非所有代码路径都在 Typescript 和 Angular 9 中返回值
- amazon-web-services - CloudWatch 中的 AWS Canary 未向服务报告
- ruby-on-rails - 这个额外的参数是从什么影响我的控制器的?
- c# - 使用 PInvoke 更改窗口大小不会导致客户区更新
- python - Python中的回文仅对字符串进行操作
- html - 悬停时更改文本颜色
- c# - C# 创建多线程套接字服务器并选择客户端/连接
- r - R:一种基于另一个表中的值进行过滤的方法?
- azure - 需要帮助 SmartHotel 演示管道