我創建了一個 CRUD 燒瓶網路應用程式來安排卡車預約。我有一個 HTML 表單,用戶在其中輸入開始和結束日期,網頁顯示該期間資料庫中的約會。
對于用戶只輸入開始日期而不是結束日期的情況,我想將“結束日期”設定為 2050-01-01,以便用戶可以看到開始日期之后的所有約會。
我試圖在我的 index() 視圖函式中撰寫一個 if 陳述句,但我不知道正確的語法。這是我在偽代碼中嘗試做的事情:
if the (end date).value.length = 0, then
end date = '2050-01-01'
else
search_date_end = request.args.get('end_date_filter')
應用程式.py:
@app.route('/', methods=['GET', 'POST'])
def index():
search_date_start = request.args.get('start_date_filter')
search_date_end = request.args.get('end_date_filter')
appts = appts_db.query \
.filter(appts_db.pickup_date.between(search_date_start, search_date_end)) \
.order_by(appts_db.pickup_date).all()
return render_template('index.html', appts=appts)
索引.html:
<h3>Appointment List:</h3>
<table>
<tr>
<th>Carrier</th>
<th>Material</th>
<th>Pickup Date [YYYY-MM-DD]</th>
</tr>
{% for appt in appts %}
<tr>
<td>{{ appt.carrier }}</td>
<td>{{ appt.material }}</td>
<td>{{ appt.pickup_date }}</td>
</tr>
{% endfor %}
</table>
<form action="/" method="GET">
<label for="start_date_filter">Choose a start date:</label>
<input type="date" id="start_date_filter" name="start_date_filter"
min="2022-01-01"><br>
<label for="end_date_filter">Choose an end date:</label>
<input type="date" id="end_date_filter" name="end_date_filter"
min="2022-01-01"><br>
<input type="submit" value="Filter Appointments">
</form>
uj5u.com熱心網友回復:
您正在get從request.args字典中獲取價值。因此,如果密鑰不存在,您將擁有None. 在最終值上添加一個if/else應該足以滿足您的需求。
@app.route('/', methods=['GET', 'POST'])
def index():
search_date_start = request.args.get('start_date_filter')
search_date_end = request.args.get('end_date_filter')
if search_date_end is None: # open ended
query = (
appts_db.query
.filter(appts_db.pickup_date >= search_date_start)
.order_by(appts_db.pickup_date)
)
else: # close ended
query = (
appts_db.query
.filter(appts_db.pickup_date.between(search_date_start, search_date_end))
.order_by(appts_db.pickup_date)
)
return render_template('index.html', appts=query.all())
使用新的樣式select宣告(> = 1.4)它變得更加簡單,因為只filter需要更改。
@app.route('/', methods=['GET', 'POST'])
def index():
search_date_start = request.args.get('start_date_filter')
search_date_end = request.args.get('end_date_filter')
stmt = select(appts_db).order_by(appts_db.pickup_date)
if search_date_end is None: # open ended
stmt = stmt.filter(appts_db.pickup_date >= search_date_start)
else: # close ended
stmt = stmt.filter(appts_db.pickup_date.between(search_date_start, search_date_end))
result = session.scalars(stmt)
return render_template('index.html', appts=result.all())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/510325.html
下一篇:如何在php中獲取這種格式moment().format('YYYY-MM-DD\THH:mm:ssZ')javascript?
