[英]Can I use one route for multiple functions?
我是一個使用Flask框架的新手用戶,我正在嘗試實現以下問題。
我為用戶提供了兩個鏈接的網頁:
<a href="{{ url_for('user', user_name=name, user_id=id) }}">Settings</a>
<a href="{{ url_for('user', user_name=name, user_id=id) }}">Details</a>
在py
文件中我想實現以下功能 - 一個路由,但兩個行為取決於用戶操作:
@app.route("/<user_name>/<int:user_id>")
def user(user_name, user_id):
# if user click on the "Settings" link then:
# ...
# some code
# ...
return render_template('user_settings.html', ...)
# if user click on the "Details" link then:
# ...
# some code
# ...
return render_template('user_details.html', ...)
或者類似的東西 - 相同的路線,但兩個不同的def:
# if user click on the "Settings" link then:
@app.route("/<user_name>/<int:user_id>")
def user_settings(user_name, user_id):
# ...
# some code
# ...
return render_template('user_settings.html', ...)
# if user click on the "Details" link then:
@app.route("/<user_name>/<int:user_id>")
def user_details(user_name, user_id):
# ...
# some code
# ...
return render_template('user_details.html', ...)
請給我一些提示,因為我不知道該怎么做? 在此先感謝您的幫助! :-)
編輯: @dim:問我為什么要擁有相同的URL? 以上問題只是一個更好地理解我想要的例子。 實際上,我在一個包含行和列的表中輸出。 在Oracle Enterprise Manager中輸出的內容:
如您所見,有兩個鏈接,但它們具有相同的Oracle RMAN ID (這很重要,因為對數據庫的查詢具有相同的WHERE
子句,例如: SELECT ... FROM ... WHERE SESSION_RECID = :parrent_id
)。 所以:
總之,我想渲染兩個不同的模板取決於具有相同端點的鏈接。
您可以使用URL查詢字符串參數。 基本上傳遞一個查詢字符串參數,如<a href="{{ url_for('user', user_name=name, user_id=id, settings='true') }}">Settings</a>
,這將導致<a href="/sammy/873?settings=true">Settings</a>
。
在視圖中,您可以檢查是否存在settings
參數,然后提供正確的模板。
@app.route("/<user_name>/<int:user_id>")
def user_details(user_name, user_id):
# ...
# some code
# ...
if request.args.get('settings'):
return render_template('user_settings.html', ...)
else:
return render_template('user_details.html', ...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.