blade와 jinja2 비교해 보았다

라라벨과 플라스크를 오가고 있다면 템플릿을 쓰는 법은 무엇입니까? 되었으므로 비망록으로.

이것을 읽으면 좋은 사람



Laravel을 했지만 Flask를 해보고 싶습니다.
Flask하고 있었지만 Laravel을하고 싶습니다.
어느 쪽이든 만진 적이있는 사람을위한 것입니다.

기본 녀석




비교 대상
블레이드
jinja2


출력
{{ 변수 }}
{{ 변수 }}

이스케이프하지 않는 출력
{!! 변수 !!}
{% 변수 %}

코멘트
{{-- 코멘트 --}}
{# 코멘트 #}

if

@if (조건식)
{% if 조건식 %}

elseif
@elseif
{% elif 조건식 2 %}

else
@else
{%else%}

endif
@endif
{%endif%}

for

@for (조건식)
{% for 조건식 %}

endfor
@endfor
{%endfor%}

현재 루프의 인덱스 (초기 값 0)
$loop->index
loop.index0

현재 루프의 인덱스 (초기 값 1)
$loop->iteration
loop.index

총 아이템 수
$loop->count
loop.length

첫 번째 루프?
$loop->first
loop.first

마지막 루프?
$loop->last
loop.last


blade의 $loop->index는 0 시작이지만 jinja2의 loop.index는 1 시작입니다. 몰랐다.

기타 비교



변수 설정 방법



블레이드
@php 
$test = 'test';
@endphp

jinja2
{% set test = 'test' %}

삼항 연산자



블레이드
@php 
$test = 'test';
@endphp

jinja2
{% set test = 'test' %}

템플릿



블레이드



views/layouts/parent.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
    @yield('head')
    <title>@yield('title') - My Webpage</title>
</head>
<body>
    <main>
        @yield('content')
    </main>
</body>
</html>

views/child.blade.php
@extends('layouts.parent')
@section('head')
    <style type="text/css">
        .text{ color: #336699; }
    </style>
@endsection
@section('title')
Index
@endsection
@section('content')
    <h1>Index</h1>
    <p class="text">
        これはIndexページです。
    </p>
@endsection

표시하면 ...

제목과 본문이 잘 표시됩니다!

jinja2



parent.html
<!DOCTYPE html>
<html lang="en">
<head>
    {% block head %}
    <title>{% block title %}{% endblock %} - My Webpage</title>
    {% endblock %}
</head>
<body>
    <main>{% block content %}{% endblock %}</main>
</body>
</html>

child.html
{% extends "base.html" %}
{% block head %}
    {{ super() }}
    <style type="text/css">
        .text { color: #336699; }
    </style>
{% endblock %}
{% block title %}
Index
{% endblock %}
{% block content %}
    <h1>Index</h1>
    <p class="text">
      これはIndexページです。
    </p>
{% endblock %}

표시하면 ...


blade와 같은 표시가 되었습니다.

부모의 템플릿은 blade 쪽이 깔끔하게 쓸 수 있네요.

이상입니다!

좋은 웹페이지 즐겨찾기