Flask로 가벼운 블로그 만들기(10)-M(V)CJinja 일반 필터 및 Flask 특수 변수 및 방법

8994 단어

카탈로그

  • 카탈로그
  • 전면 목록
  • Jinja에서 자주 사용하는 필터
  • default
  • float
  • int
  • lenght
  • title
  • round
  • join
  • tojson
  • truncate
  • escape
  • safe
  • 사용자 정의 필터
  • Flask의 특수 변수 및 방법
  • config 객체
  • Request 객체
  • session 개체
  • url_for 방법
  • get_flashed_메시지 방법

  • 목록


    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

  • 들어오는 변수 코드 블록의 값이 None이면 들어오는 기본값:
  • {{ post.date | default("2016-11-22") }}
  • 변수 코드 블록의 값이false로 전송되기를 원할 때 기본값을 사용하면default 필터의 두 번째 인자로 True를 전송할 수 있습니다.
  • {{ '' | 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) }}
  • common 매개 변수: 반올림
  • floor 매개 변수: 정수 부분 절취
  • ceil 매개 변수: 위로 정렬
  • {{ 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)
  • main.py에서 필터 함수 설명하기
  • 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') }}
  • 라우팅 함수에 매개변수가 있는 EG./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()에 의해 생성된다는 것입니다.

    좋은 웹페이지 즐겨찾기