2012-12-24 34 views
16

Tôi đang làm việc với Flask 0.9.Đường dẫn URL Flask: Định tuyến Một số URL đến cùng chức năng

Bây giờ tôi muốn con đường ba url với chức năng tương tự:

/item/<int:appitemid> 
/item/<int:appitemid>/ 
/item/<int:appitemid>/<anything can be here> 

Phần <anything can be here> sẽ không bao giờ được sử dụng trong hàm.

tôi phải sao chép các chức năng tương tự hai lần để đạt được mục tiêu này:

@app.route('/item/<int:appitemid>/') 
def show_item(appitemid): 

@app.route('/item/<int:appitemid>/<path:anythingcanbehere>') 
def show_item(appitemid, anythingcanbehere): 

Sẽ có một giải pháp tốt hơn?

Trả lời

45

Tại sao không chỉ sử dụng thông số có khả năng trống, với giá trị mặc định là None?

@app.route('/item/<int:appitemid>/') 
@app.route('/item/<int:appitemid>/<path:anythingcanbehere>') 
def show_item(appitemid, anythingcanbehere=None): 
+0

rất dễ dàng, trực quan giải pháp, hiệu quả. – tmthyjames

4

Có - bạn sử dụng cấu trúc sau:

@app.route('/item/<int:appitemid>/<path:path>') 
@app.route('/item/<int:appitemid>', defaults={'path': ''}) 

Xem đoạn mã ở http://flask.pocoo.org/snippets/57/

Các vấn đề liên quan