[python] Flask를 사용하여 URL에서 명명 된 매개 변수를 얻으려면 어떻게해야합니까?

사용자가 플라스크 앱에서 실행되는이 URL에 액세스하면 웹 서비스가 물음표 뒤에 지정된 매개 변수를 처리 할 수 ​​있기를 원합니다.

http://10.1.1.1:5000/login?username=alex&password=pw1

#I just want to be able to manipulate the parameters
@app.route('/login', methods=['GET', 'POST'])
def login():
    username = request.form['username']
    print(username)
    password = request.form['password']
    print(password)



답변

request.args쿼리 문자열의 구문 분석 된 컨텐츠를 가져 오는 데 사용하십시오 .

from flask import request

@app.route(...)
def login():
    username = request.args.get('username')
    password = request.args.get('password')


답변

URL 매개 변수는 기본값 ( ) 및 유형 ( )에 대한 선택적 매개 변수 가있는 메소드 request.args가있는 ImmutableMultiDict 에서 사용할 수 있습니다.이 매개 변수는 입력 값을 원하는 형식으로 변환하는 호출 가능입니다. (자세한 내용은 방법 설명서 를 참조하십시오.)getdefaulttype

from flask import request

@app.route('/my-route')
def my_route():
  page = request.args.get('page', default = 1, type = int)
  filter = request.args.get('filter', default = '*', type = str)

위 코드를 사용한 예 :

/my-route?page=34               -> page: 34  filter: '*'
/my-route                       -> page:  1  filter: '*'
/my-route?page=10&filter=test   -> page: 10  filter: 'test'
/my-route?page=10&filter=10     -> page: 10  filter: '10'
/my-route?page=*&filter=*       -> page:  1  filter: '*'


답변

뷰 정의의 URL에 대괄호 <>를 사용할 수도 있으며이 입력은 뷰 함수 인수로 이동합니다.

@app.route('/<name>')
def my_view_func(name):
    return name


답변

URL에 단일 인수가 전달 된 경우 다음과 같이 수행 할 수 있습니다.

from flask import request
#url
http://10.1.1.1:5000/login/alex

from flask import request
@app.route('/login/<username>', methods=['GET'])
def login(username):
    print(username)

여러 개의 매개 변수가있는 경우 :

#url
http://10.1.1.1:5000/login?username=alex&password=pw1

from flask import request
@app.route('/login', methods=['GET'])
    def login():
        username = request.args.get('username')
        print(username)
        password= request.args.get('password')
        print(password)

매개 변수가 양식 매개 변수로 전달되고 URL에 표시되지 않는 POST 요청의 경우 수행하려는 작업이 작동합니다. 실제로 로그인 API를 개발하는 경우 GET 대신 POST 요청을 사용하고 데이터를 사용자에게 노출시키는 것이 좋습니다.

사후 요청의 경우 다음과 같이 작동합니다.

#url
http://10.1.1.1:5000/login

HTML 스 니펫 :

<form action="http://10.1.1.1:5000/login" method="POST">
  Username : <input type="text" name="username"><br>
  Password : <input type="password" name="password"><br>
  <input type="submit" value="submit">
</form>

노선:

from flask import request
@app.route('/login', methods=['POST'])
    def login():
        username = request.form.get('username')
        print(username)
        password= request.form.get('password')
        print(password)


답변

URL :

http://0.0.0.0:5000/user/name/

암호:

@app.route('/user/<string:name>/', methods=['GET', 'POST'])
def user_view(name):
    print(name)

(편집 : 형식 문자열에서 공백 제거)


답변

정말 간단합니다. 이 과정을 두 가지 간단한 단계로 나누겠습니다.

  1. html 템플릿에서 사용자 이름 및 비밀번호의 이름 태그를 다음과 같이 선언합니다.

    <form method="POST">
    <input type="text" name="user_name"></input>
    <input type="text" name="password"></input>
    </form>
  2. 그런 다음 코드를 다음과 같이 수정하십시오.

    from flask import request
    
    @app.route('/my-route', methods=['POST']) #you should always parse username and 
    # password in a POST method not GET
    def my_route():
      username = request.form.get("user_name")
      print(username)
      password = request.form.get("password")
      print(password)
    #now manipulate the username and password variables as you wish
    #Tip: define another method instead of methods=['GET','POST'], if you want to  
    # render the same template with a GET request too

답변

사용 request.args.get(param)예를 들어, :

http://10.1.1.1:5000/login?username=alex&password=pw1
@app.route('/login', methods=['GET', 'POST'])
def login():
    username = request.args.get('username')
    print(username)
    password = request.args.get('password')
    print(password)

다음은 코드에 대한 참조 링크입니다.