[PYTHON] J'ai comparé lame et jinja2

Quelle est la façon d'écrire un modèle lors des allers-retours entre Laravel et Flask? En tant que mémorandum.

Quelqu'un qui devrait lire ceci

Je faisais du Laravel mais je veux essayer Flask Je faisais Flask mais je veux essayer Laravel L'un ou l'autre est pour ceux qui l'ont touché.

Mec basique

Comparaison blade jinja2
production {{variable}} {{variable}}
Sortie pour ne pas s'échapper {!!variable!!} {%variable%}
commentaire {{--commentaire--}} {#commentaire#}
if @if (Expression conditionnelle) {% if Expression conditionnelle %}
elseif @elseif {%expression conditionnelle elif 2%}
else @else {% else %}
endif @endif {% endif %}
for @for (Expression conditionnelle) {% for Expression conditionnelle %}
endfor @endfor {% endfor %}
Index de la boucle de courant(Valeur initiale 0) $loop->index loop.index0
Index de la boucle de courant(Valeur initiale 1) $loop->iteration loop.index
Nombre total d'articles $loop->count loop.length
Est-ce la première boucle? $loop->first loop.first
Est-ce la dernière boucle? $loop->last loop.last

$ Loop-> index de la lame commence à 0, mais loop.index de jinja2 commence à 1. Je ne savais pas.

Autres comparaisons

Comment définir des variables

blade


@php 
$test = 'test';
@endphp

jinja2


{% set test = 'test' %}

Opérateur triangulaire

blade


@php 
$test = 'test';
@endphp

jinja2


{% set test = 'test' %}

modèle

blade

html: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>

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">
Ceci est la page d'index.
    </p>
@endsection

Lorsqu'il est affiché ... スクリーンショット 2020-06-11 11.59.04.png Le titre et le texte sont également bien affichés!

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">
Ceci est la page d'index.
    </p>
{% endblock %}

Lorsqu'il est affiché ... スクリーンショット 2020-06-11 10.55.41.png

C'est devenu le même écran que la lame.

Le modèle parent peut être écrit plus clairement avec Blade.

c'est tout!

Recommended Posts

J'ai comparé lame et jinja2
J'ai comparé Java et Python!
J'ai comparé Qiskit et Blueqat (débutant)
J'ai personnellement comparé Java et Ruby
J'ai comparé argparse standard python3 et python-fire
J'ai comparé l'itérateur de Python et l'énumérateur de Ruby
J'ai essayé de combiner Fabric, Cuisine et Jinja2
J'ai essayé d'utiliser jinja2
J'ai comparé Python more-itertools 2.5 → 2.6
E / S asynchrones et E / S non bloquantes
J'ai touché Tensorflow et keras
J'ai comparé l'écran de gestion de Django
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
J'ai comparé Node.js et Python lors de la création d'une miniature à l'aide d'AWS Lambda
J'ai comparé Jinja2 en lisant le document pour l'utiliser avec Django
J'ai joué avec PyQt5 et Python3
J'ai remplacé le calcul numérique de Python par Rust et comparé la vitesse
J'ai comparé l'utilisation de Dash et Streamlit dans l'environnement Docker en utilisant les données de la ligue B