gpt4 book ai didi

python - 我可以将一条路线用于多种功能吗?

转载 作者:太空狗 更新时间:2023-10-30 00:07:15 25 4
gpt4 key购买 nike

我是使用 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', ...)

或者可能是这样的 - 相同的路线但两个不同的定义:

# 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 中输出的内容: output from 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> .

在 View 中,您可以检查 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', ...)

关于python - 我可以将一条路线用于多种功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com