Django 逆引きチートシート （Template編）

## 表示
### 変数を表示したい
```
{{ <変数名> }}
```

### 辞書型の変数の値を表示したい
```
{{ <辞書型変数名>.<キー> }}
```

### あるオブジェクトの属性を表示したい
```
{{ <変数名>.<属性> }}
```

### list型の指定したインデックスの要素を表示したい
```
{{ <list型変数名>.<インデックス> }}
```

### アプリケーションのURLを表示したい
```
{% url <URL名> %}
```
`<URL名>`はURLconfで設定した名称

### アプリケーションのURLを表示する時にパスパラメータを埋めたい
```
{% url <URL名> <パラメータ1> [<パラメータ2>...] %}
```

### テンプレートタグで使用する記号を表示したい
```
{% templatetag <記号名> %}
```

`<記号名>`は以下の通り


| `<記号名>` | 表示される記号 |
|---|---|
| openblock | 	`{%` |
| closeblock | 	`%}` |
| openvariable | 	`{{` |
| closevariable | 	`}}` |
| openbrace | 	`{` |
| closebrace | 	`}` |
| opencomment | 	`{#` |
| closecomment | 	`#}` |



### 変数の表示形式を変換したい
```
{{ <変数名>|<フィルター> }}
```

フィルターに引数が必要な場合は

```
{{ <変数名>|<フィルター>:"<引数>" }}
```

どんなフィルターがあるかは下記参照

#### ■ 主なフィルターの逆引き一覧

#### ☆ 文字列の配置

| フィルターの作用 | 書き方 |
| --- | --- |
| 左寄せ（幅指定） | `ljust:"<数値>"` |
| 中央寄せ（幅指定） | `center:"<数値>"` |
| 右寄せ（幅指定） | `rjust:"<数値>"` |
| 改行を`<br>`に置換 | `linebreaksbr` |

#### ☆ 文字列の書式設定

| フィルターの作用 | 書き方 |
| --- | --- |
| 先頭の文字を大文字に変換 | `capfirst` |
| 小文字に変換 | `lower` |
| 大文字に変換 | `upper` |
| デフォルト表示 | `default:"<文字列>"` |
| デフォルト表示(None) | `default_if_none:"<文字列>"` |

#### ☆ 日時の書式設定

| フィルターの作用 | 書き方 |
| --- | --- |
| 日付書式 | `date:"<書式文字列>"` |
| 時刻書式 | `time:"<書式文字列>"` |

`<input type="datetime">`のvalueの形式は`date:"Y-m-d"`

#### ☆ 数値の書式設定

| フィルターの作用 | 書き方 |
| --- | --- |
| ファイルサイズ表現書式(KB, MB, GBなど) | `filesizeformat` |
| 小数点以下N桁で切り捨て表示 | `floatformat:"<正の整数>"` |
| 小数を四捨五入して整数で表示 | `floatformat:"0"` |

#### ☆ True/Falseの書式設定

| フィルターの作用 | 書き方 |
| --- | --- |
| True/Falseの表示変換 | `yesno:"<カンマ区切り文字列>"` |

#### ☆ HTML

| フィルターの作用 | 書き方 |
| --- | --- |
| HTMLエスケープをしない | `safe` |
| URLエンコード | `urlencode` |

## 表示の制御
### 条件によって表示を分けたい

```
{% if <条件1> %}

...条件1がTrueの場合に表示される部分...

{% elif <条件2> %}

...条件2がTrueの場合に表示される部分...

{% else %}

...上記以外の場合に表示される部分...

{% endif %}
```
`elif`や`else`はなくてもいい

### リストの要素を繰り返し表示したい

```
{% for <変数名> in <リスト型オブジェクト> %}

...この中が繰り返される...

{% endfor %}
```

`<変数名>`はリストの要素が入る。名前は自分で決める。

### リストの要素を逆順に繰り返し表示したい

```
{% for <変数名> in <リスト型オブジェクト> reversed %}

...この中が繰り返される...

{% endfor %}
```

`<変数名>`はリストの要素が入る。名前は自分で決める。

### リストに特定の値が含まれる場合と含まれない場合で表示を分けたい

```
{% if <値> in <リスト> %}
... 含まれる場合はここが表示される ...
{% else %}
... 含まれない場合はここが表示される ...
{% endif %}
```

#### 【応用】リスト(`a_list`)に特定の値(`value`)が含まれる場合、チェックボックスをオンにしたい

```
<input type="checkbox" name="is_something" value="{{ value }}" {% if value in a_list %}checked{% endif %}>
```

### 辞書の要素を繰り返し表示したい

```
{% for <キー変数名>,<値変数名> in <辞書型オブジェクト>.items %}

...この中が繰り返される...

{% endfor %}
```

`<キー変数名>`は辞書のキー、`<値変数名>`は辞書の値が入る。名前は自分で決める。

### 繰り返し表示するとき中身が空の場合は特別な表示をしたい

```
{% for <変数名> in <リスト型オブジェクト> %}

...この中が繰り返される...

{% empty %}

...中身が空の場合はここが表示される...

{% endfor %}
```

### 繰り返し中に交互に値を出し分けたい

```
{% cycle <値1> <値2> ... %}
```

### 表示したくない（コメントを書きたい）

```
{# コメントはここに書けます #}
```

### 別のテンプレートを元にして作成したい

```
{% extends <元テンプレート名> %}
```

```
{% block <ブロック名> %}

...この部分が元テンプレートの{% block <ブロック名> %}~{% endblock %}で括られた部分と置き換わる...

{% endblock %}
```

### 別のテンプレートを差し込みたい

```
{% include <テンプレート名> %}
```

### 別のテンプレートに値を渡したい

```
{% include <テンプレート名> with <変数名>=<値> %}
```

`<変数名>`は呼び出し先の別のテンプレートで使用できる。名前は自分で決める。

### テンプレートタグセットを読み込みたい

```
{% load <テンプレートタグセット名> %}
```