플라스크(flask)에서 내부 링크 만들기 - urlfor함수 사용하기!

2019. 11. 1. 06:30

웹페이지의 가장 큰 장점 중의 하나는 다른 문서를 링크할 수 있다는 것이다. 웹페이지를 만들다보면 내 웹페이지의 다른 곳을 링크해야 할 일도 생긴다. 개발중인 웹페이지라면 로컬 컴퓨터에서 작업하기 때문에, 로컬 호스트 주소를 입력해야 한다. 하지만 이렇게 하면 나중에 배포할 때 로컬 호스트 주소를 실제 주소로 다 변경해줘야 하는 리스크가 생긴다.

오늘은 플라스크(flask)에서 내부 링크를 만드는 방법에 대해서 알아보도록 하겠다.


url




아래와 같이 자신의 웹페이지의 다른 곳으로 이동하는 링크가 있다고 해 보자. 개발중이라면 로컬호스트에서 웹서버가 구동되기 때문에, 보통 아래와 같은 주소를 입력해야 한다.



<!doctype html>

<html>

  <head>

  <link rel="stylesheet" href="{{ url_for('static', filename='css/w3.css') }}">

  </head>

  <body>

  <div class="w3-container w3-center">

    <h2>{{ subject }}</h2>

    <a href="http://127.0.0.1:5000/hello">내 웹싸이트의 hello로 이동합니다.</a>

  </div>

  </body>

</html>



하지만, 위와 같이 입력하면 나중에 배포시에 웹서버 주소가 바뀌기 때문에 사용할 수 없다. 이런 경우에 url_for함수를 이용하면 좋다. 알아서 내부 웹서버의 주소로 바꿔주기 때문이다. 위의 경우에는 아래와 같이 작성할 수 있다.



<!doctype html>

<html>

  <head>

  <link rel="stylesheet" href="{{ url_for('static', filename='css/w3.css') }}">

  </head>

  <body>

  <div class="w3-container w3-center">

    <h2>{{ subject }}</h2>

    <a href={{ url_for('hello') }}>내 웹싸이트의 hello로 이동합니다.</a>

  </div>

  </body>

</html>




URL에 파리미터 값을 넣고 싶다면 아래와 같이 넣을 수 있다. '파라미터 = 값'의 형태로 넣어주면 된다. 추가로 계속넣고 싶다면 ,(콤마)를 찍고 계속 입력해주면 된다. 여기서 주의할 점은 값을 ""(쌍따옴표)로 감싸줘야 한다는 것이다.



<!doctype html>

<html>

  <head>

  <link rel="stylesheet" href="{{ url_for('static', filename='css/w3.css') }}">

  </head>

  <body>

  <div class="w3-container w3-center">

    <h2>{{ subject }}</h2>

    <a href={{ url_for('hello', variable="foo", act="do") }}>내 웹싸이트의 hello로 이동합니다.</a>

  </div>

  </body>

</html>



플라스크 웹서버를 띄우고 위의 링크를 클릭하면, 아래와 같이 url에 파라미터로 값이 잘 입력된 것을 확인할 수 있다.


url_파라미터



참고로 플라스크 코드를 첨부하면 아래와 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
# coding = utf-8
 
from flask import Flask, render_template
 
 
app = Flask(__name__)
 
@app.route("/")
def index():
 
    return render_template("url_for_test.html", subject = "안녕하세요.")
 
@app.route("/hello/")
def hello():
    return "Hello Flask!"
 
if __name__ == "__main__":
    app.run()
 
cs



오늘은 이렇게 플라스크(flask)에서 내부 링크를 만드는 방법, url_for함수에 대해서 알아보았다. 알면 별 것 아닐 수 있지만, 모르면 굉장한 노가다와 스트레스를 받아야 한다. 이번 기회에 잘 익혀두어서 사용하기 바란다.


몇 가지 팁이나 방법을 알면 파이썬을 더 효율적으로 코딩할 수 있는 방법들이 있다. 자세한 내용이 궁금하다면, 아래 링크를 참조해보자.
( 참조: 파이썬 효율적인 코딩팁과 방법들 )

댓글()