まとめ
両者非常に似通っていて、同じ感覚で使用できる
Laravelでは親の
@yield
に子の@section
が展開されるが、Djangoでは親子ともにblock
で表現するLaravelでは、
@extends
にlayouts/app.blade.php
を使用する際に、layouts.app
と指定する(layouts/app
ではない)のが少し戸惑った
Djangoの場合
親のテンプレート
templates/base.html
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<header>
...
</header>
<main>
{% block content %}
{% endblock %}
</main>
<footer>
...
</footer>
</body>
子のテンプレート
templates/hoge/fuga.html
{% extends 'base.html' %}
{% block content %}
<div>
{% if items %}
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}
Laravelの場合
親のテンプレート
resources/views/layouts/app.blade.php
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<header>
...
</header>
<main>
@yield('content')
</main>
<footer>
...
</footer>
</body>
子のテンプレート
resources/views/hoge.blade.php
@extends('layouts.app')
@section('content')
<div>
@if (count($items)) > 0)
<ul>
@foreach( $items->all() as $item)
<li>{{ $item }}</li>
@endforeach
</ul>
@endif
</div>
@endsection