플라스크 마지막 문제는 우리가 약간의 가곡을 썼다 있지만, 일부 너무 초라한 것을, 우리는이 페이지의 동적을!
A는, Jinja2 템플릿 엔진이 알고 (당신이 볼 수 없습니다 보면 너무 게으른)
주형
앞의 예에서, 주 영향은 가장 간단한 요청 인 뷰 생성 요청에 응답 함수이다. 사실,보기 기능은 두 가지 효과가 있습니다 비즈니스 로직 처리를하고 응답 내용을 반환합니다. 대형 애플리케이션, 비즈니스 로직과 프리젠 테이션 컨텐츠 함께, 그것은 코드의 복잡성 및 유지 보수 비용을 증가시킬 것이다. 이 배운 템플릿 섹션, 즉, 그 역할은 응답 콘텐츠를 반환하는 함수의 또 다른보기의 역할을하는 것입니다.
-
그것은 실제로 응답 템플릿 파일에 사용되는 데이터 엔진의 요구로부터 얻은 템플릿의 특정 값을 알려주는 틀 (가변)의 동적 부분에 의해 표시되는 텍스트를 포함
-
다음 실제 값과와 대체 변수는 결과 문자열, "렌더링"이라는 프로세스를 반환
-
플라스크는 Jinja2 렌더링이 템플릿 템플릿 엔진을 사용하는 것입니다
템플릿을 사용의 이점을 : -
보기 기능은 서비스 로직 및 데이터를 처리만을 담당 (비즈니스 로직 조건)
-
그리고 표시 기능 결과보기 템플릿 데이터 (뷰 측면을 도시) 걸릴
-
명확한 코드 구조, 낮은 커플 링
Jinja2
두 개념 :
- Jinja2는 : 파이썬, 파이썬 템플릿 언어, 장고 템플릿 엔진에서 자신의 디자인 아이디어에 의해 구현되는 널리 사용되는 템플릿 엔진이며, 그 구문과 내장되어 플라스크 템플릿 강력한 기능을 확대 언어.
- 템플릿 언어는 : 그것은 자동으로 템플릿에 전달 일반적으로 몇 가지 변수를 템플릿 언어로 간단한 텍스트 문서 형식을 생성하기 위해 특정 위치의 한 종류가 미리 정의 된 템플릿 자리 표시 자 변수의 이름을 대체 설계되어있다.
템플릿 기능을 렌더링
- 플라스크는 render_template 기능 패키지는 템플릿 엔진을 제공합니다
- 첫 번째 파라미터는 후자의 파라미터는 해당 템플릿의 변수의 실제 값을 나타내는 키 - 값 쌍은 파일 이름는 render_template 함수 템플릿이다.
둘째, 폭력 Jinja2 학습 템플릿 (면책 조항 : jinja2는 HTML의 내부에 사용됩니다)
주의
{# 我是注释 #}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{# 我是注释 #}
</body>
</html>
변수 블록 (파이썬에서 들어오는 페이지에 표시 될 수 있음)
{{ name }}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ name }}
</body>
</html>
제어 블록 (분석 및 루프, 작은 BB, 라인에보기)
{% if user %}
{{ user }}
{% else %}
hello!
{% for index in indexs %}
{{ index }}
{% endfor %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if user %}
{{ user }}
{% else %}
hello!
{% for index in indexs %}
{{ index }}
{% endfor %}
</body>
</html>
필터
변수가 "필터"로 수정 될 수 있으며, 필터가 내부 jinja2으로 이해 될 수있는 기본 기능 문자열 처리 기능한다.
{{ 'abc' | captialize }}
# Abc
{{ 'abc' | upper }}
# ABC
{{ 'hello world' | title }}
# Hello World
# 过滤器可以链式使用
{{ "hello world" | replace('world','daxin') | upper }}
# HELLO DAXIN
{{ 18.18 | round | int }}
# 18
좀 요약을 필터링합니다
이름 | 기능 |
---|---|
안전한 | 벗어날 때 시간을 렌더링 |
capitialize | 대문자로 변환 값의 첫 번째 문자는 다른 사진을 소문자 |
보다 낮은 | 소문자 전환 가치 |
높은 | 값은 대문자로 변환됩니다 |
표제 | 각 단어의 첫 글자의 값은 대문자로 변환됩니다 |
손질 | 삭제 후미 공간의 값 |
striptags | 모든 HTML 태그의 값을 렌더링하기 전에 삭제됩니다 |
붙다 | 다수의 스트링이다 스티칭 |
바꾸다 | 또한 문자열 값 |
일주 | 숫자 반올림 기본값은, 매개 변수에 의해 제어 될 수있다 |
INT | 정수 값으로 변환 |
표시
from flask import Flask,render_template
app = Flask(__name__)
@app.route("/")
def index():
names=["李雷","思远","彦林","辉辉","天骄"]
strs="abcde"
#第一个names是传入html用于接受的名字,第二个是python里变量的名字
return render_template("index.html",names=names,strs=strs)
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for name in names %}
{% if name=="天骄" %}
My love is {{ name }}!<br>
{% else %}
My friend is {{ name }}! <br>
{% endif %}
{% endfor %}
{{ strs }}的大写是{{ strs | upper }}
</body>
</html>
결과 :
오늘 Jinja2는 단순히 나는 그것을 아주 쉽게 이해하기, 내일 더 많은 내용 뒤에해야한다고 생각, 문법에 대해 이야기!