English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Flask는 특정 URL에 바인딩된 함수의 출력을 HTML 형식으로 반환할 수 있습니다. 예를 들어, 다음 스크립트에서 hello() 함수는 추가된 <h 태그를 사용하여 표시됩니다1> 태그로 표시됩니다 'Hello World' 。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from flask import Flask app = Flask(__name__) @app.route('/) def index(): return '<html><body><h1>'Hello World'</h1></body></html>' if __name__ == '__main__': app.run(debug = True)
하지만 Python 코드에서 HTML 내용을 생성하는 것은 매우 번거롭습니다. 특히 변화하는 데이터와 Python 언어 요소(예: 조건이나 루프)를 포함할 때 더욱 그렇습니다. 자주 HTML 코드를 엔트리티화해야 합니다.
Jinja를 사용할 수 있습니다2템플릿 엔진 기술을 사용하여 함수에서 직접 HTML을 반환하지 않고, render_template() 함수를 통해 HTML 파일을 렌더링할 수 있습니다. 다음 코드와 같이 렌더링할 수 있습니다.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from flask import Flask app = Flask(__name__) @app.route('/) def index(): return render_template('hello.html') if __name__ == '__main__': app.run(debug = True)
Flask는 스크립트가 있는 동일한 폴더에서 templates 폴더에 있는 HTML 파일을 찾으려고 시도합니다. 템플릿을 사용하는 애플리케이션 디렉토리 구조는 다음과 같습니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 app.py hello.py templates hello.html register.html ....
‘웹 템플릿 시스템’이라는 용어는 HTML 스크립트를 설계하여 변수 데이터를 동적으로 삽입할 수 있음을 의미합니다. 웹 템플릿 시스템은 템플릿 엔진, 데이터 소스, 템플릿 처리기로 구성됩니다.
Flask는 jinga를 사용합니다2웹 템플릿 엔진은 변수와 표현식(이 경우 Python 표현식)을 포함한 HTML 문법 대체 기호를 분포시키는 웹 템플릿입니다. 이 변수와 표현식은 템플릿이 표시될 때 값을 대체합니다.
다음 코드는 템플릿( templates) 폴더에 저장하십시오: hello.html。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask HTTP 요청 메서드 처리</title> </head> <body> <h1>Hello {{ name }}!</h1> </body> </html>
다음 코드를 저장할 것입니다: app.py파일에 저장하고 Python shell에서 실행합니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, render_template app = Flask(__name__) @app.route('/hello/<user>') def hello_name(user): return render_template('hello.html', name = user)}} if __name__ == '__main__': app.run(debug = True)
개발 서버가 실행될 때, 브라우저를 엽니다. 그런 다음 URL을 입력하세요: - http://localhost:5000/hello/maxsu
URL의 변경 가능한 부분은 {{name}} 대체 표시자에 삽입됩니다.
Jinja2템플릿 엔진은 다음 구분자를 사용하여 HTML에서 탈출합니다.
{% ... %} 다중 행 문장을 위해 사용 {{ ... }} 템플릿에 표시할 표현식을 출력하는 데 사용 {# ... #} 템플릿 출력에 포함되지 않는 주석을 위해 사용 # ... ## 단一行 문장을 위해 사용
다음 예제에서, 템플릿에서 조건문을 사용하는 방법을 설명합니다. hello() 함수의 URL 규칙은 정수 파라미터를 받아들입니다. 그런 다음, 그 값을 hello.html 템플릿으로 전달합니다. 그 안에서, 받은 숫자(점수)의 값을 비교합니다(큰지 작은지)50)으로 인해 HTML에서 조건적으로 렌더링 출력이 수행되었습니다.
Python 스크립트는 다음과 같습니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, render_template app = Flask(__name__) @app.route('/hello/<int:score'> def hello_name(score): return render_template('hello.html', marks = score) if __name__ == '__main__': app.run(debug = True)
템플릿 파일: hello.html 의 HTML 템플릿 스크립트는 다음과 같습니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask 템플릿 예제</title> </head> <body> {% if marks>50 %} <h1>통과했습니다!<!/h1> {% else %} <h1>시험을 통과하지 못했습니다!<!/h1> {% endif %} </body> </html>
주의하세요, 조건문 if-else와 endif는 구분자 {%..%。%}에 포함됩니다。
Python 스크립트를 실행하고 URL => http:을 방문하세요://localhost/hello/60, 그런 다음 http:을 방문하세요://localhost/hello/59조건적으로 HTML 출력을 확인할 수 있습니다.
Python 루프 구조는 템플릿 내에서도 사용할 수 있습니다. 다음 스크립트에서, 브라우저에서 URL => http:을 열면,// localhost:5000/result을 호출할 때, result() 함수는 딕셔너리 객체를 템플릿 파일로 보냅니다: results.html 。
result.html 템플릿의 부분은 for 루프를 사용하여 딕셔너리 객체 result{}의 키와 값 쌍을 HTML 테이블의 셀로 표시합니다。
Python shell에서 다음 코드를 실행하세요。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, render_template app = Flask(__name__) @app.route('/result) def result(): dict = {'phy':59'che':60, 'maths':90 return render_template('result.html', result = dict)} if __name__ == '__main__': app.run(debug = True)
다음 HTML 스크립트를 템플릿 폴더에 저장하십시오: templates)에 템플릿 파일: result.html 。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask 템플릿 예제</title> </head> <body> <table border = 1> {% for key, value in result.items() %} <tr> <th> {{ key }} </th>/th> <td> {{ value }} </td>/td> </tr> {% endfor %} </table> </body> </html>
여기서는 For 루프에 해당하는 Python 문장이 {%...%}에 포함되고, 키와 값은 {{}}에 배치됩니다.
개발 시작 후, 브라우저에서 http:를 열어 주세요://localhost:5000/결과를 얻기 위해 다음을 입력하십시오。