J'essaie de modifier les détails du smartphone et tous les champs de saisie ont une validation dataRequired(). Cependant, le fichier d'entrée des images est vide par défaut. Lorsque j'essaie de modifier d'autres champs, tels que la marque, je dois également saisir le fichier d'entrée de l'image afin de réussir la modification. Comment puis-je faire en sorte que le fichier d'entrée récupère automatiquement l'image_URL de la base de données après avoir soumis le formulaire ?
Fichier d'entrée pourimage_URL
{% for smartphone in smartphones %} <div class="form-floating mb-4 justify-content-between"> <img src="{{ url_for('static',filename = smartphone['image_URL']) }}" style="height: 250px;"> <input type="file" id="image_URL" name="image_URL" accept="image/*"> </div> {% endfor %}Back-end dans
app.py
@app.route('/editSmartphone/<int:id>',methods = ['GET','POST']) def editSmartphone(id): smartphoneID = id conn = get_db_connection() smartphones = conn.execute('SELECT * FROM Smartphone WHERE id = ?',(smartphoneID,)).fetchall() form = editSmartphoneForm(request.form) if request.method == 'POST' and form.validate(): conn.execute('UPDATE Smartphone SET brand = ?,model = ?,processor = ?, ram = ?, colour = ?, battery = ?, lowprice = ?, highprice = ?, screenSize = ?, refreshRate = ?, description = ?, image_URL = ? WHERE id = ?',(form.brand.data, form.model.data, form.processor.data, form.ram.data, form.colour.data, form.battery.data, form.lowprice.data, form.highprice.data, form.screenSize.data, form.refreshRate.data, form.description.data, form.image_URL.data, smartphoneID)) conn.commit() conn.close() message = "Smartphone detail has been modified successfully" flash(message,'edited') return redirect('/manageSmartphone') return render_template('editSmartphone.html',smartphones = smartphones, form = form)
Votre question ressemble quelque peu à cette question, je vais donc emprunter ici quelques éléments de cette réponse.
Vous avez réussi
smartphones
列表获取当前的智能手机,因此您正在编辑的手机的当前image_URL
Cela devrait ressembler à :Ma méthode consiste à vérifier si
editSmartphone
路由上编辑手机时检查form.image_URL.data
est vide. Vous pouvez écrire une logique pour vérifier cela avant d'appeler l'instruction de mise à jour de la base de données :Vous pouvez voir ci-dessus que nous stockons les résultats de ce contrôle
image_URL
中。然后,您只需在数据库更新语句中将form.image_URL.data
替换为image_URL
Ça y est :Aussi, dans
editSmartphoneForm
内部,请确保删除image_URL
上的DataRequired()
validateur.J'espère que cela vous aidera, ou du moins vous mettra sur la bonne voie !