python - 如何处理 Python Flask 重定向

标签 python flask

我想知道在 Flask 中提供重定向的最佳方法是什么。我有一个看起来像这样的删除按钮:

<a href="/elastic_ips/{{region}}/delete/{{eli['public_ip']}}"><button class="btn btn-danger btn-mini" type="button">Delete</button></a>

调用这个 app.route:

@app.route('/elastic_ips/<region>/delete/<ip>')
def delete_elastic_ip(region=None,ip=None):
        creds = config.get_ec2_conf()
        conn = connect_to_region(region, aws_access_key_id=creds['AWS_ACCESS_KEY_ID'], aws_secret_access_key=creds['AWS_SECRET_ACCESS_KEY'])
        ip = ip.encode('ascii')
        elis = conn.get_all_addresses(addresses=ip)

        for eli in elis:
                result = []
                r = eli.release()
                result.append(r)
        return Response(json.dumps(result), mimetype='application/json')

我宁愿不将结果作为 json 返回。我不确定使用删除按钮返回页面的“正确”方式是什么。要么我可以放入一个 HTML 页面来重定向到引用,要么在 Flask 中有一个内置的方式让返回成为一个 app.route?

最佳答案

好吧,如果你想返回 delete_elastic_ip 的 url,使用 url_for 函数很容易 (more about this function)

不知道这个端点是否在某个蓝图中,但如果不在,就这么简单:

from flask import url_for, redirect
.... your code ...
return url_for('delete_elastic_ip', region=None, ip=None)

您当然也可以将 Nones 替换为您需要的值 :) 这将向您返回端点的 url。顺便说一句,这也是一种在模板中使用 url 的方法。不要对它们进行硬编码,使用 jinja 模板中的 url_for 函数为您生成 View 的 url。该函数可用作模板中的标准全局变量 (more)

此外,如果您只想直接重定向到其他端点并且不返回任何内容,则 flask 中有一个函数 redirect 。将它与 url_for 结合使用,一切顺利 ;)

from flask import url_for, redirect
... your code...
return redirect(url_for('delete_elastic_ip', region=None, ip=None))

它会刷新页面,因此如果您需要的话,这不是 ajax 重定向的最佳方式。对于 ajax,只需返回带有 url_for 结果的 json 并用它做一些事情。

关于python - 如何处理 Python Flask 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13737716/

相关文章:

post - nginx 不会将 POST 数据转发到 uwsgi -- [更新] Flask 不会读取 POST 数据

javascript - Flask-assets - 如何防止特定应用程序的静态 js 文件被另一个应用程序使用

python - Gunicorn/flask API 暴露 sklearn 模型不工作

python - 为什么第 256 行和第 256 列没有蓝线?

python - Django + Angular 在 Heroku 上的部署

python - 通过 SQLAlchemy 执行 Teradata MERGE 时不会产生任何结果

python - matplotlib 热图的中心对齐刻度标签

reactjs - 如何使用代理将 Flask API 和 React 前端微服务部署到 Google App Engine?

python - nose 在不运行它们的情况下获取测试列表

python - PyCharm 解析 - flask.ext.sqlalchemy 与 flask_sqlalchemy