Maison > Questions et réponses > le corps du texte
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)
P粉1484347422024-02-26 18:57:14
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 à :
current_image_URL = smartphones[0][11]
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 :
if form.image_URL.data == "": image_URL = current_image_URL else: image_URL = form.image_URL.data
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 :
conn.execute('UPDATE Smartphone SET ... image_URL = ? ...',(..., image_URL, ...))
Aussi, dans editSmartphoneForm
内部,请确保删除 image_URL
上的 DataRequired()
validateur.
J'espère que cela vous aidera, ou du moins vous mettra sur la bonne voie !