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


2023年6月23日金曜日

Django: テンプレートでuuidを文字列に変換

 DjangoでuserにUUIDフィールドを作ったので以下のようにテンプレートで条件判定しようとしたところ、同じUUID文字列のはずなのにどうしても一致しませんでした。

{% if "あるUUID文字列" == user.uuid %}

 ・・・・

{% endif %}


以下のように、uuidを文字列に変換しないといけませんでした。

{% if "あるUUID文字列" == user.uuid|stringformat:"s" %}

 ・・・・

{% endif %}


2023年6月15日木曜日

Ubuntuでfwupd-refresh.serviceがfailedになっている

Ubuntu: 20 or 22

以下のコマンドで起動中のサービス一覧を表示した。

$ systemctl list-units --type=service

その中で fwupd-refresh.service というものが failed になっていたのでその解決方法です。

次のファイルに User=root を追記します。
/lib/systemd/system/fwupd-refresh.service

[Unit]
Description=Refresh fwupd metadata and update motd
Documentation=man:fwupdmgr(1)
After=network.target

[Service]
Type=oneshot
User=root
CacheDirectory=fwupdmgr

・・・・以下略・・・・

サービスを再起動します。

$ systemctl daemon-reload; service fwupd-refresh restart; service fwupd-refresh status


参考: https://askubuntu.com/questions/1415928/cannot-start-fwupd-refresh-service