簡體   English   中英

我可以使用一種途徑進行多種功能嗎?

[英]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 em dbconsole的輸出

如您所見,有兩個鏈接,但它們具有相同的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.

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