我是Python / Flask的新手。这是我的问题,我没有使用wt-forms将值发布到server.but,我使用wt-forms来编辑值。但是它正在工作。但是问题编辑值后将不会显示照片。当我在浏览器中添加图像时,检查将显示照片的元素。它可能是模板中的问题。任何人都可以帮助我。感谢先进。
这是模板代码driver_edit.html
<div class="form-group">
<label>name: </label>
<input name="name" type="text" class="form-control" placeholder="enter name">
</div>
<div class="form-group">
<label>photo: </label>
<input name="photo" type="file" class="form-control" placeholder="upload photo">
</div>
<div class="form-group">
<label>Aadhar: </label>
<input name="aadhar" type="file" class="form-control" placeholder="up_load photo">
</div>
以下是view.html代码。
<thead>
<tr>
<th>
name
</th>
<th>
photo
</th>
<th>
aadhar
</th>
</tr>
</thead>
{% for values in driver %}
<tr>
<td>{{values.name}}</td>
<td>{{values.id}}</td> **here it is working {{values.id}}**
<td><a href="assets/images/{{values.photo}}"><img src="assets/images/{{values.photo}}" height="40" width="30"/></a>{{values.photo}}</td>
<td><a href="assets/images/{{values.aadhar}}"><img src="assets/images/{{values.aadhar}}" width="30" height="40" width="30"/></a>{{values.photo}}</td>
</tr>
{% endfor %}
以下是用于从Web界面向数据库发布值的Python代码。
def driver(request):
file2=request.files['photo']
file3=request.files['aadhar']
if file2.filename and file3.filename == None:
flash('No selected file')
return redirect(request.url)
filename=''
if file2:
filename = secure_filename(file2.filename)
file2.save(os.path.join(app.config['UPLOAD_FOLDER'], file2.filename))
if file3:
filename = secure_filename(file3.filename)
file3.save(os.path.join(app.config['UPLOAD_FOLDER'], file3.filename))
newdriver=Driver(name=request.form['name'],photo=file2.filename,aadhar=file3.filename,
status=request.form['status'],lastlogin=request.form['lastlogin'])
sqlsession.add(newdriver)
sqlsession.commit()
@app.route('/static/driver')
def driversearch():
if session['username']:
return render_template('driversearching.html',user=session['username'],Truck_company=get_truckdetails().all())
else:
flash('login first')
return main()
@app.route('/static/driverdetails')
def driverdetails():
if session['username']:
users=getdriver()
if users.first()==None:
return render_template('empty.html',user=session['username'])
else:
return render_template('driverdetails.html',user=session['username'],driver=users.all())
这是wtf表单code.py:
class DriverForm(FlaskForm):
name=StringField('name')
photo=StringField('photo')
aadhar=StringField('aadhar')
@app.route('/newoneedit')
def newoneedit():
form=DriverForm()
if form.validate_on_submit():
details={
'photo':'form.photo.data',
'aadhar':'form.aadhar.data',
}
sqlsession.add(details)
return redirect(url_for('driverdetails'))
return render_template('driver_edit.html',form=form)
@app.route('/control/editdriver/<int:id>',methods=['GET','POST'])
def edituser(id):
qry=sqlsession.query(Driver).filter(Driver.id==id).first()
form=DriverForm(request.form,obj=qry)
if request.method=='POST' or 'GET' and form.validate_on_submit():
form.populate_obj(qry)
sqlsession.add(qry)
sqlsession.commit()
return redirect(url_for('driverdetails'))
return render_template('driver_edit.html',form=form,car_id=id,Truck_company=get_truckdetails().all(),driver=driver)
这是数据库模型类:
class Driver(Base):
__tablename__=='driver'
name=Column(String(100))
photo= Column(String(100),nullable=True)
aadhar=Column(String(50),nullable=True)
这里我使用wt表单中的stringfield表示照片,而使用字符串我使用字符串。