Rumah > Soal Jawab > teks badan
Saya cuba mengedit butiran telefon pintar dan semua medan input mempunyai pengesahan dataRequired(). Walau bagaimanapun, fail input untuk imej kosong secara lalai. Apabila saya cuba mengedit medan lain, seperti jenama, saya juga perlu memasukkan fail input untuk imej untuk mengedit dengan jayanya. Bagaimanakah saya boleh mendapatkan fail input secara automatik mengambil image_URL daripada pangkalan data selepas menyerahkan borang?
Masukkan fail untukURL_gambar
{% 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 %}Bahagian belakang dalam
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
Soalan anda kelihatan agak serupa dengan soalan ini, jadi saya akan meminjam beberapa elemen daripada jawapan itu di sini.
Anda telah lulus smartphones
列表获取当前的智能手机,因此您正在编辑的手机的当前 image_URL
Ia sepatutnya kelihatan seperti:
current_image_URL = smartphones[0][11]
Kaedah saya adalah untuk menyemak sama ada editSmartphone
路由上编辑手机时检查 form.image_URL.data
kosong. Anda boleh menulis beberapa logik untuk menyemak ini sebelum memanggil kenyataan kemas kini pangkalan data:
if form.image_URL.data == "": image_URL = current_image_URL else: image_URL = form.image_URL.data
Anda boleh lihat di atas bahawa kami menyimpan hasil semakan ini image_URL
中。然后,您只需在数据库更新语句中将 form.image_URL.data
替换为 image_URL
Itu sahaja:
conn.execute('UPDATE Smartphone SET ... image_URL = ? ...',(..., image_URL, ...))
Juga, dalam editSmartphoneForm
内部,请确保删除 image_URL
上的 DataRequired()
pengesah.
Semoga ini membantu, atau sekurang-kurangnya membawa anda ke landasan yang betul!