2012-12-06 80 views
1

我想知道什么是在烧瓶中提供重定向的最佳方式。我有一个删除按钮,看起来像这样:如何处理Python烧瓶重定向

<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页面中添加一个重定向到引用的HTML页面,或者在Flask中有一个内置的方法来返回一个app.route?

回答

7

那么,如果你想返回delete_elastic_ip的网址,很容易与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返回给端点。顺便说一句,这也是一种与模板中的网址一起使用的方式。不要硬编码它们,在jinja模板中使用url_for函数为您生成视图的url。该功能可用作模板中的标准全局变量(more

此外,如果您只想直接重定向到某个其他端点并且不返回任何内容,则烧瓶中有一个功能redirect。如果你想要的)

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

这将刷新页面,这样不是最好的方式对Ajax的重定向虽然,用它与url_for结合,你是好去。对于ajax,只需返回带有url_for结果的json,并使用它来完成任务。

+0

谢谢,实际上我想回到调用delete_elastic_ip函数的页面,但是你完全解释了它! –

+0

很高兴帮助;) –