파이썬(Python)/Flask

[Python] flask 주소 간에 이동 방법 (redirect, url_for)

끄적끄적아무거나 2021. 11. 14. 10:23
반응형

 

목차

     

     

     

     

     

    url_for 란? (인자값이 없는 경우)

     

    url_for는 flask 라이브러리에서 제공하는 함수입니다. syntax는 아래와 같습니다. 

     

    url_for(url에 연결된 함수명, 전달할 인자값)

     

    url_for 함수는 함수값을 인자로 받습니다. 그리고 인자값(argument)도 보낼 수 있습니다. 이때 flask의 redirect를 연결해서 사용해야 합니다. 아래 예제를 보시면 쉽게 이해 됩니다.

     

    예제는 인자 값이 없는 경우를 사용해보겠습니다.

     

    코드>>

    from flask import Flask, redirect, url_for
    app = Flask(__name__)
    
    @app.route('/a_page')
    def go_a():
        return 'This is a_page'
    
    @app.route('/c_page')
    def go_c():
        return redirect(url_for('go_a'))
    
    if __name__ == '__main__':
        app.run(port="9999",debug = True)

     

    결과>>

    "http://127.0.0.1:9999/c_page" 에 접속하였고 결과는 아래와 같이 a_page로 이동하였습니다.

     

    주석>>

    1번 라인: url_for 사용을 위해 redirect와 url_for를 import 합니다.

    10번 라인: /c_page에 접속할 경우 go_a 함수가 있는 url로 이동하라는 명령입니다.

     

     

     

    url_for 란? (인자값이 있는 경우)

     

    코드>>

    from flask import Flask, redirect, url_for
    app = Flask(__name__)
    
    @app.route('/a_page')
    def go_a():
        return 'This is a_page'
    
    @app.route('/b_page/<c_data>')
    def go_b(c_data):
        return 'This is b_page with %s' %c_data
    
    @app.route('/c_page/<c_value>')
    def go_c_data(c_value):
        print(c_value)
        if c_value == "a":
            return redirect(url_for('go_a'))
        else:
            return redirect(url_for('go_b',c_data = c_value))
    
    if __name__ == '__main__':
        app.run(port="9999",debug = True)

     

    결과>>

     

    "http://127.0.0.1:9999/c_page/a" 에 접속할 경우 아래와 같이 나옵니다.

     

    "http://127.0.0.1:9999/c_page/hi" 에 접속할 경우 아래와 같이 나옵니다.

     

    주석>>

    15~18번 라인: c_value를 받아서 c_value의 값에 따라 다른 페이지로 이동합니다. c_value의 값이 "a"가 아니면 해당 인자(argument)를  go_b 함수에 인자 값으로 보내 줍니다.

     

     

     

    반응형