Djangoのテンプレート内でAuthアプリケーションの権限チェックを使用できますか?(特権ユーザーのテンプレートの最後に簡単なフォームを表示したい)
そしてもっと重要なことは、私はそれを行うべきですか、それともこれは「Djangoの方法」ではありませんか?
Djangoのテンプレート内でAuthアプリケーションの権限チェックを使用できますか?(特権ユーザーのテンプレートの最後に簡単なフォームを表示したい)
そしてもっと重要なことは、私はそれを行うべきですか、それともこれは「Djangoの方法」ではありませんか?
回答:
テンプレートの権限を確認する場合は、次のコードで十分です。
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
ここで、modelは、ユーザーがフォームを表示するためのアクセス許可を必要とするモデルを指します。
その他の例については、https://docs.djangoproject.com/en/stable/topics/auth/default/#permissionsを参照してください。
現在ログインしているユーザーの権限は、テンプレート変数に保存されます
{{ perms }}
(これを有効にするには、以下のコンテキストプロセッサが必要です。django.contrib.auth.context_processors.auth
)
perms.app_label.foobar
場合は、権限名のスペルを間違えた場合でも、常にtrueになることに注意してください。
Django2.0以降でテスト済み
ログインしたユーザーが持っているすべての権限をテンプレート(.html)で確認したい場合は、次のように出力します。
{{ perms.app_name }}
または
{{ perms }}
ユーザーに権限があるかどうかを確認するには、次を使用します。
{% if perms.app_name.change_model_name_lower_cased %}
例:
{% if perms.Utilization.change_invoice %}
ここで:使用率は私のアプリ名です。請求書はモデル名です。
一般に、次の4種類のアクセス許可があることに注意してください。
また、ユーザーが所属するグループに起因するすべての権限を表示する場合は、Djangoシェルを起動します...
user = User.objects.get(username='somename')
user.get_group_permissions()
ここにリストされているすべての権限は、彼が属しているグループによるものです。
(特定のオブジェクトなどで)パーマをチェックする際により詳細な情報が必要な場合は、次の拡張機能を確認してください:http://django-authority.readthedocs.org/en/latest/check_templates/