2015-08-17 111 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')沒有得到生成錯誤。

相關問題