플라스크 URL 선택적 매개 변수를 직접 선언 할 수 있습니까?
현재 다음과 같은 방법으로 진행 중입니다.
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
이것이 username
선택 사항 이라고 직접 말할 수 있습니까?
답변
다른 방법은 쓰는 것입니다
@user.route('/<user_id>', defaults={'username': None})
@user.route('/<user_id>/<username>')
def show(user_id, username):
pass
그러나 단일 경로를 작성하고 username
선택 사항으로 표시 하고 싶습니까? 그 경우라면 가능하지 않다고 생각합니다.
답변
몇 달 전에 Audrius가 요리 한 것과 거의 동일하지만 파이썬에서 익숙한 방식으로 함수 헤드의 기본값으로 약간 더 읽기 쉽습니다.
@app.route('/<user_id>')
@app.route('/<user_id>/<username>')
def show(user_id, username='Anonymous'):
return user_id + ':' + username
답변
나처럼 Flask-Restful을 사용하는 경우 다음과 같은 방법으로도 가능합니다.
api.add_resource(UserAPI, '/<userId>', '/<userId>/<username>', endpoint = 'user')
그런 다음 리소스 클래스에서
class UserAPI(Resource):
def get(self, userId, username=None):
pass
답변
@user.route('/<userId>/') # NEED '/' AFTER LINK
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
답변
@app.route('/', defaults={'path': ''})
@app.route('/< path:path >')
def catch_all(path):
return 'You want path: %s' % path
http://flask.pocoo.org/snippets/57/
답변
@user.route('/<user_id>', defaults={'username': default_value})
@user.route('/<user_id>/<username>')
def show(user_id, username):
#
pass
답변
Skornos와 거의 동일하지만보다 명확한 답변을 위해 변수 선언이 있습니다. Flask-RESTful 확장 과 함께 사용할 수 있습니다 .
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class UserAPI(Resource):
def show(userId, username=None):
pass
api.add_resource(UserAPI, '/<userId>', '/<userId>/<username>', endpoint='user')
if __name__ == '__main__':
app.run()
이 add_resource
방법을 사용하면 여러 URL을 전달할 수 있습니다. 각각은 귀하의 리소스 로 라우팅됩니다 .