2017-07-12 63 views
0

我有一個路徑命名搜索:@ app.route('/ search') 是否可以向其添加多個可選參數?例如:燒瓶 - 具有多個可選參數的路由

@app.route('/search/pg/<int:pg>') 
@app.route('/search/types/<types>') 
@app.route('/search/number/<int:number>') 
@app.route('/search/subject/<subject>') 

在URL中不應該問題的順序,這樣我就可以調用/搜索/ PG/2,或/搜索/主題/ MySubject/PG/2 /搜索/類型/職位/主題/ MySubject/PG/2

我嘗試這樣做,但它僅與完整路徑和所有參數的工作原理:

@app.route('/search/pg/<int:pg>/types/<types>/subject/<subject>', methods=['GET', 'POST']) 
@app.route('/search/subject', defaults={'subject', None}) 
@app.route('/search/pg/<int:pg>/types/<types>', methods=['GET', 'POST']) 
@app.route('/search/types', defaults={'types', None}) 
@app.route('/search', defaults={'pg': 1}, methods=['GET', 'POST']) 
@app.route('/search/pg/<int:pg>', methods=['GET', 'POST']) 
def search(pg, types=None, subject=None): 
    pass 
+0

使用查詢字符串和解析的選項請求構建查詢 – reptilicus

回答

2

您可以在URL,而不是「子資源」使用過濾器。 然後你可以把搜索參數以任意順序在您的要求: /search?pg=<pg>&types=<types>

在裏面你可以檢索請求對象參數燒瓶視圖功能:

@app.route('/search/') 
def search(): 
    pg = request.args.get('pg') 
    ...