2. Flask (JSON, URL)

2021. 8. 5. 03:49SERVER/Flask

내가 생각하는 핵심 키워드

JSON, render_template

 

 

Flask URL 연결

app.route(), url을 만들어주는 통로

app.route()와 이어져 있는 함수를 사용해서 HTML, JSON 형식의 데이터를 전달

(Web에는 많은 형식이 존재하지만 JSON으로 많이 전달받고 있다)

 

 

1. JSON

JavaScript Object Notation, JavaScript 구문에 기반을 두고 있지만 JS는 아니다(차이점 존재)

JSON을 직접 호출하거나 인스턴스를 생성할 수는 없고, 두 개의 메서드(?)를 제외하면

자신만의 흥미로운 기능은 없다고 한다 (추후 공부)

Javascript 객체 리터럴 문법을 따르는 문자열로 js의 데이터 타입 + 다른 객체를 포함한다

이 같은 방식으로 데이터 계층을 구축하여 사용된다

더 자세한 내용 : JSON으로 작업하기 - Web 개발 학습하기 | MDN (mozilla.org)

 


2. JSON 형식으로 전달

from flask import Flask, jsonify

 

JSON을 사용하기 위해 jsonify를 import

 

def test_json():
    test_data = {"key": "value"}

해당 함수는 app.route( )의 url에서 실행할 함수 (Flask (Prologue)의 내용과 동일)

test_data에 할당된 { } 딕셔너리 형태의 key값과 value값이 화면에 출력되는 내용에 해당

 

return jsonify(test_data)

 

jsonify 함수는 jsonify( ) 안에 있는 내용을 화면에 전달하게 된다

이때, test_data는 단순히 dict 형식이 아닌 jsonify 형식의 데이터임을 명시

 

실행 시 위와 같은 결과를 화면에 출력하여 준다

(실행시킨 App.py 파일이 서버의 역할을 하고 있으며, 서버가 응답(결과)을 보여준 것)

 


3. HTML 형식의 데이터 표현

파일 준비

Flask로 HTML 파일을 전달하고 싶다면 두 가지의 준비과정이 필요하다

templates라는 이름을 가진 폴더 + templates 폴더 안에 들어있는 html 파일이다

(templates로 폴더 이름을 설정해야 Flask (App.py)가 자동으로 찾아서 연결을 수행한다)

 

[index.html]

플라스크 서버에서 불러올 index.html

 

[App.py]

from flask import Flask, render_template

render_template 사용을 위한 import

render_template 함수는 templates 폴더 안의 html 파일 읽어와서 전달하는 역할

 

return render_template("index.html")

templates 안에 html 파일의 이름과 render_templte( )안의 이름이 동일해야 화면에 전달

templates 안에 생성한 index.html을 render_template( )에 넣어서 리턴

 

render_template가 index.html의 내용을 읽어온 후 전달해주는 것을 확인할 수 있다

 


4. url 연결

@app.route("url address")

제작하는 프로그램의 규모, 기능이 늘어날 수록 필요한 API 통로를 많이 만들어주어야 한다

 

하나의 @app.route( )는 여러 함수를 가질 수 있다

하나의 @app.route( )에서 이미 정의된 함수의 이름은 다른 @app.route( )에서는 사용 불가

(즉, 함수의 중복 사용은 불가능하다)

 

from flask import *

* 은 모든 패키지를 import 하는 것을 의미

지금까지 살펴본 jsonify, render_template 도 포함

 

@app.route("/student/<name>")
def test_user(name):
    user = {"name": name}
    return jsonify(user)

/student/<name> 은 name 부분에 url 입력값을 받겠다는 의미

입력받은 값은 test_user 함수에서 매개변수로 받고, user에 name의 값으로 할당

JSON 형식으로 user를 리턴

 

각 url, API의 통로마다 반환되는 리턴값이 달라지는 것을 확인

/student/<name>은 입력값이 인자로 전달되어 반환되는 것을 확인할 수 있다

'SERVER > Flask' 카테고리의 다른 글

6. Flask (Authentication)  (0) 2021.08.06
5. Flask (CRUD)  (0) 2021.08.05
4. Flask (Blueprint, Jinja Template)  (0) 2021.08.05
3. Flask (HTTP Method)  (0) 2021.08.05
1. Flask (Prologue)  (0) 2021.08.05