2017-12-11 15 views
0

こんにちは、テンプレート内のカスタムユーザnit要求ユーザのパーマを確認する方法はありますか。 コード例:テンプレートのユーザ権限を確認してください(ユーザはリクエストしないでください)

{% for agency_user in users %} 
    <tr> 
     <td>{{ agency_user.username }}</td> 
     <td>{{ agency_user.get_full_name }}</td> 
     <td>{{ agency_user.groups.all.first.name }}</td> 
     <td>{{ agency_user.min_price }}</td> 
     <td>{{ agency_user.max_price }}</td> 
     {% if agency_user|has_perm:'may_see_commerce_sell' %} #not working 
      <td>some action</td> 
     {% else %} 
      <td>some action</td> 
     {% endif %} 
     <td> 
      <a href="{% url 'user_edit' agency_user.id %}" class="edit icon"></a> 
      <a user-id="{{ agency_user.id }}" class="trash icon" title="some action"></a> 
     </td> 
    </tr> 
    {% empty %} 
     <td style="text-align: center" colspan="11">some action</td> 
{% endfor %} 

または私は、各ユーザーの権限にカスタムモデルメソッドを書くことがありますか? Profileモデルで考えるよう

何か:

def sell_commerce(self): 
    if self.has_perm('may_see_commerce_sell'): 
     return True 
    else: 
     return False 

答えて

2

templatetagsとしてあなたのアプリディレクトリ名内側にディレクトリを作成し、その後templatetagsmytage.pyファイルを作成し、この

#mytage.py 
from django import template 
register = template.Library() 

@register.filter() 
def check_permission(user, permission): 
    if user.user_permissions.filter(codename = permission).exists(): 
     return True 
    return False 

のようなものは、あなたをロードしますテンプレート内のタグ

{%load mytags%} 
<html lang="en"> 
................. 
{% if user|check_permission:'delete_bills' %} 
     ... do something if have permission ... 
{% endif %} 
........... 
</html> 
あなたは、これは、コンソール

に現在のログインユーザのすべての権限を印刷するログイン

for perm in request.user.permissions.all(): 
    print(perm.name) 
    print(perm.codename) 
    print(perm) 

後にどこでもあなたのDjangoのビューで、現在のユーザーのすべての権限

名前やコードネームフィールドで、リストを許可をフィルタリングすることができ

2

テンプレートフィルタを作成して、これを確認することができます。

from django.template import Library 

register = Library() 

@register.filter() 
def check_permission(user, permission): 
    return user.has_perm(permission) 

次に、テンプレートでそれをロードしますが、私はエラー「check_perms」を受けているが登録されていない私はtemplatetagsディレクトリを作成し、以下のコードでcheck_perms.py +のinitを追加し、このような...

{% if user|check_permission:'may_see_commerce_sell' %} 
    ... do stuff ... 
{% endif %} 
+0

としてそれを使用しますタグライブラリ。 – Beliaf

+0

'templatetags'ディレクトリは、インストールされているアプリの中になければなりません。 – Alasdair

+0

これはアカウント(アプリ)/ templatetags / – Beliaf

関連する問題