Flask로 가벼운 블로그 만들기(10)-M(V)CJinja 일반 필터 및 Flask 특수 변수 및 방법
카탈로그
목록
Flask로 가벼운 블로그 쓰기(1)-프로젝트 만들기Flask로 가벼운 블로그 쓰기(2)-Hello World!Flask로 가벼운 블로그 쓰기 (3) - (M) VCMySQL과 SQLAlchemy를 연결하여 Flask로 가벼운 블로그 쓰기(4)-(M)VC데이터 모델과 테이블을 만들고 Flask로 가벼운 블로그 쓰기 (5) - (M) VCSQLAlchemy의 CRUD 상해는 Flask로 가벼운 블로그(6)-(M)VCmodels의 관계(one to many)는 Flask로 가벼운 블로그(7)-(M)VCmodels의 관계(many to many)는 Flask로 가벼운 블로그(8)-(M)VCAlembic은 데이터베이스 구조의 업그레이드 및 다운그레이드를 관리하기 위해 Flask로 가벼운 블로그(9)-M(V)CJinja 문법 기초 빠른 개요
Jinja에서 자주 사용하는 필터
default
default
{{ post.date | default("2016-11-22") }}
{{ '' | default('String', True)}}
float
Python의float () 와 같이 변수 코드 블록에 전송된 값을 부동점수로 변환합니다.
{{ 75 | float }}
int
Python과 유사한 int()
{{ 75.5 | int }}
lenght
Python의 len과 유사()
The Count: {{ post.tags | lenght }}
title
변수 코드 블록을 가져오는 String의 첫 글자를 대문자로 변환하여 올바른 Title이 되도록 합니다.
{{ "post title" | title }}
round
Python과 유사한 round ()는 부동점수의 정밀도를 정의합니다.
{{ 3.14159 | round(1) }}
{{ 4.7 | rount(1, "common")}}
join
변수 코드 블록에 들어오는 목록 변수의 요소를 문자열로 연결합니다. 파이톤의join ()
{{ ['JmilkFan', 'fanguiju' ] | join(',')}}
tojson
필터 tojoin은 실제로 파이톤의 json을 호출했습니다.dumps 함수는 대상을 서열화합니다. 같은 변수 코드 블록이 서열화될 수 있는 대상dict인지 확인해야 합니다.
{{ {"key": "value" | tojson }}}
만약 우리가 SQLAlchemy 모델의 조회 대상을 템플릿 파일에 직접 전송하여 렌더링하는 방식으로 전체 HTML 페이지를 만들 때, 우리는 tojson 필터를 자주 사용하고, 서열화된 결과를 safe 처리해야만 안전성을 확보할 수 있다.
{{ posts | tojson | safe }}
truncate
지정된 길이의 String 객체를 잘라내고 잘라낸 하위 문자열 뒤에 줄임표를 추가할 수 있습니다.
{{ "a long stringggggggggggggggggg " | truncate(5) }}
escape
변수 코드 블록을 HTML 문자열로 가져오는 경우 해당 문자열의 &,,, 를 HTML의 이스케이프 시퀀스로 인쇄합니다.
{{ "Title"
| escape }}
safe
safe 필터는 escape 기능을 포함하여 변수 코드 블록에 전송된 HTML 문자열의 특수 기호를 HTML 전의합니다. 이것은 필요한 보안 수단입니다.만약 우리가 HTML을 변수로 변수 코드 블록에 직접 전송해야 하고, 이 전송된 인터페이스가 공개된다면, 사용자가 악의적인 HTML 코드를 제출하는 것을 방지해야 한다.만약 Jinja가 HTML 전의 기능이 없다면, 이 변수 코드 블록에 접근할 때 제출된 악성 HTML 코드를 실행할 것입니다.EG. 한 사용자가 응답 상자에 Script 태그가 포함된 HTML 코드를 입력하면 페이지를 여는 모든 브라우저가 이러한 Script를 실행합니다.
그러나 한 가지 문제는 HTML에 대한 전의를 하지 말아야 하고 안전성을 확보해야 하는 경우도 있다. 이 문제에 대해 escape 필터는 해결할 수 없다.그래서 진자는 세이프 필터를 제공했다.
{{ "Post Title"
</h1> | safe }}
사용자 정의 필터
Jinja에서 Python 함수를 작성하는 것과 같은 필터를 사용자 정의합니다.
def count_substring_from_python(string, sub):
return string.count(sub)
app.jinja_env.filters['count_substring'] = count_substring_from_python
{{ variable | filter_name("String") }}
필터 함수
count_substring_from_python
를 필터로 매핑count_substring
Flask의 특수 변수 및 방법
이러한 Flask 특수 변수 및 방법은 템플릿 파일에서 직접 액세스할 수 있습니다.
config 객체
config 대상은 Flask의 config 대상, 즉 app입니다.class DevConfig 속성을 포함하는 config 객체{{ config.SQLALCHEMY_DATABASE_URI }}
request 객체
Flask에서 현재 요청을 나타내는 Request 객체입니다.{{ request.url }}
세션 객체
바로 Flask의 세션 대상입니다.{{ session.new }}
url_for 방법
url_for()
는 전송된 루트 함수에 대응하는 URL을 되돌려줍니다. 이른바 루트 함수는 app.route()
루트 장식기에 장식된 함수입니다.EG. main.py의 홈().{{ url_for('home') }}
{{ config.SQLALCHEMY_DATABASE_URI }}
{{ request.url }}
{{ session.new }}
{{ url_for('home') }}
/post/1024
를 정의한 경우 이러한 매개변수를 명명된 매개변수로 전달할 수 있습니다{{ url_for('post', post_id=1024) }}
get_flashed_메시지 방법
이전에 Flask에서
flash()
전송된 정보 목록을 되돌려줍니다. 이것은 하나의 대기열을 실현하는 것과 유사합니다.EG. Python String 대상이 표시한 정보를 메시지 대기열에 추가한 다음 호출 get_flashed_messages()
방법으로 하나씩 꺼내서 소비합니다.{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
NOTE: 전제는 이 메시지 대기열이
flash()
에 의해 생성된다는 것입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.