在Flask中使用wt-forms编辑值后,将不会显示图像

时间:2018-02-23 12:42:18

标签: python flask jinja2 flask-wtforms

我是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表示照片,而使用字符串我使用字符串。

0 个答案:

没有答案