recherche

Maison  >  Questions et réponses  >  le corps du texte

Le fichier d'entrée récupère l'enregistrement image_URL dans la base de données

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 pour

image_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粉277305212P粉277305212300 Il y a quelques jours470

répondre à tous(1)je répondrai

  • P粉148434742

    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 !

    répondre
    0
  • Annulerrépondre