2015-08-17 112 views
1

我有一个像这样定义的视图:瓶重定向到URL,并通过查询字符串

@views.route('/issues') 
def show_view(): 
    action = request.args.get('action') 
method = getattr(process_routes, action) 
return method(request.args) 

在我process_routes模块,我想调用此方法,并通过查询字符串值。我有以下代码:

return redirect(url_for('views.show_view', action='create_or_update_success')) 

我有一个名为create_or_update_success

在process_routes功能我得到

BuildError: ('views.show_view', {'action': 'create_or_update_success'}, None) 

观点是蓝图。我可以成功拨打

/issues?action=create_or_update_success 

在我的浏览器中。

我在做什么错?

+0

显然'url_for()'无法找到'views.show_view'注册。你确定你的'views'蓝图在你的'Flask'对象注册时使用'views'的名字吗? –

+0

或者'views'或许是你的'Flask'对象本身? –

+0

@MartijnPieters:我确信是这样。我有'views = Blueprint(__ name__,__name __)'。应用程序对象名为'app' – Mark

回答

1

第一部分,views.,必须准确反映您给对象Blueprint()的第一个参数。

不要试图将第一个参数设置为__name__,因为这可能包含模块在包内时的完整路径。在你的情况下,我怀疑是some_package.views而不是views

使用字符串字面代替Blueprint()第一个参数:

views_blueprint = Blueprint('views', __name__) 

,所以你可以参考url_for('views.show_view')没有得到生成错误。

相关问题