web-dev-qa-db-ja.com

Djangoでテンプレート内の許可を確認してください

Djangoのテンプレート内でAuthアプリケーションの権限チェックを使用できますか? (特権ユーザーのテンプレートの最後に簡単なフォームを表示したい)

そしてもっと重要なことは、私はそれを全然やるべきなのか、それとも「Djangoのやり方」なのか?

69
Daniel

テンプレートのアクセス許可を確認する場合は、次のコードで十分です。

{% if perms.app_label.can_do_something %}
<form here>
{% endif %}

モデルは、ユーザーがフォームを表示するためのアクセス許可が必要なモデルを指します。

その他の例については、 https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions を参照してください。

現在ログインしているユーザーの権限は、テンプレート変数{{ perms }}

(これには、次のコンテキストプロセッサを有効にする必要があります:Django.contrib.auth.context_processors.auth

160
Victor Neo

特定のオブジェクトなどのパーマをより細かくチェックする必要がある場合は、この拡張機能を確認してください。 http://Django-authority.readthedocs.org/en/latest/check_templates/

2
lai

テスト済みDjango 2.0 +

ログインしたユーザーが持っているすべての権限をテンプレート(.html)で表示するには、次のように印刷します。

{{ perms.app_name }}

または

{{ perms }}

ユーザーに権限があるかどうかを確認するには、次を使用します。

{% if perms.app_name.change_model_name_lower_cased %}

例:

{% if perms.Utilization.change_invoice %}

ここ:使用率は私のアプリ名です。請求書はモデル名です。

一般に、4種類のアクセス許可があることに注意してください。

  • 変更[例:Utilization.change_projectemail]
  • ビュー[例:Utilization.view_invoice]
  • 削除[例:Utilization.delete_invoicetype]
  • 追加[例:Utilization.add_invoicetype]

また、ユーザーが属するグループのためにユーザーが持っているすべての権限を表示したい場合は、Django Shell ...

user = User.objects.get(username='somename')
user.get_group_permissions()

ここにリストされているすべての許可は、彼が属するグループによるものです。