簡體   English   中英

Flask 如何為 select 標簽指定默認值 HTML

[英]Flask how to specify a default value for select tag HTML

我有一個跟蹤卡車預約的應用程序。 在這個應用程序中,我在數據庫表中有一個運營商列表。 當用戶想要更新約會時,他們可以使用下拉菜單從數據庫中的運營商列表中選擇一個新的運營商。 如何將下拉列表默認值設置為當前運營商選擇?

到目前為止,這是我嘗試過的(沒有任何運氣):

應用程序.py:

class carriers_db(db.Model):
    carrier_id = db.Column(db.Integer, primary_key=True)
    carrier_name = db.Column(db.String(100), nullable=False)

class appts_db(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    carrier = db.Column(db.String(100), nullable=False)

@app.route('/update/<int:id>', methods=['GET', 'POST'])
def update(id):
    appt = appts_db.query.get_or_404(id)
    carriers = carriers_db.query.order_by(carriers_db.carrier_name).all()

更新.html:

<h4>Current carrier: {{ appt.carrier }}</h4>
<label>Option to select a new carrier:</label><br>
<select name="carrier">
    {% for carrier in carriers %}
        <option 
        value = "{{ carrier.carrier_name }}"
        selected = "{{ carrier.carrier_name }}">
        {{ carrier.carrier_name }}</option>
    {% endfor %}
</select>

您可以在update.html的 for 循環中添加檢查值是否等於所選值:

更新.html

<h4>Current carrier: {{ appt.carrier }}</h4>
<label>Option to select a new carrier:</label><br>
<select name="carrier">
    {% for carrier in carriers %}
        <option
        value = "{{ carrier.carrier_name }}"
        {% if carrier.carrier_name == appt.carrier %} selected {% endif %}>
        {{ carrier.carrier_name }}</option>
    {% endfor %}
</select>

在 Jinja 模板中顯示所選選項值的完整示例:

app.py

from flask import Flask, render_template, flash, url_for, request, redirect

app = Flask(__name__)
app.secret_key = b'a secret key'


@app.route('/update', methods=['GET', 'POST'])
def show_update():
    current_carrier = "tello"
    carriers = [{"carrier_name": "mint"},
                {"carrier_name": "tmobile"},
                {"carrier_name": "tello"}]
    return render_template('update.html', current_carrier=current_carrier,
                           carriers=carriers)

update.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Update page</title>
</head>
<body>
<h4>Current carrier: {{ current_carrier }}</h4>
<label>Option to select a new carrier:</label><br>
<select name="carrier">
    {% for carrier in carriers %}
    <option value="{{ carrier.carrier_name }}" {% if carrier.carrier_name== current_carrier %} selected {% endif %}>
        {{ carrier.carrier_name }}
    </option>
    {% endfor %}
</select>
</body>
</html>

Output:

燒瓶選擇選項頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM