2023年6月28日水曜日

Django: テンプレートでクエリパラメータを取得する

Djangoのテンプレートでクエリパラメータを表示したい場合です。

クエリ例1:https://example.com/?preview=ok&update=true&id=123

上記の例ようなクエリパラメータの場合、一つずつ取得するときは以下のようにします。

{{ request.GET.preview }} ⇒ ok
{{ request.GET.update }} ⇒ true
{{ request.GET.id }} ⇒ 123

一覧を表示したいときは以下のようにします。

{% for key, value in request.GET.items %}
    <p>{{ key }}: {{ value }}</p>
{% endfor %}

表示結果
preview: ok
update: false
id: 123

注意点としては、以下のようにパラメータに重複がある場合です。

クエリ例2:https://example.com/?preview=ok&update=true&id=123&id=xyz

この場合、{{ request.GET }} は

<QueryDict: {'preview': ['ok'], 'update': ['true'], 'id': ['123', 'xyz']}></QueryDict:>

のようなQueryDictなのですが、

{{ request.GET.id }} は リスト ['123', 'xyz'] になるわけではなく、後ろの'xyz'しか取得できません。

{{ request.GET.id }} ⇒ xyz


0 件のコメント:

コメントを投稿