2017-09-09 5 views
0

ユーザーが特定のグループに属しているか管理者である場合にHTMLの特定の部分が表示されるようにしようとしています。特定のグループと管理者がDjangoのHTMLの一部を表示できるようにします。

{% for group in user.groups.all %} 
    {% if group.name == 'example' %} 
     Insert html here 
    {% endif %} 
{% endfor %} 

問題は、管理者があまりにもそれを見ることができるようにしようとしています

base.html:唯一の特定のグループはそれを見ることができるように私はそれを作るための方法を見つけることができました。 request.user.is_staffのようなものをifステートメントに追加しようとしたとき、コードは基本的に無視しました。管理者がグループに関係なくこのhtmlを見ることを許可していますか?また、これはbase.htmlなので、Pythonモジュールでこれをしようとすると問題になります。テンプレートで

from django import template 
from django.contrib.auth.models import Group 

register = template.Library() 

@register.filter(name='has_group') 
def has_group(user, group_name): 
    group = Group.objects.get(name=group_name) 
    return group in user.groups.all() 

:あなたはカスタムテンプレートタグ必要

+0

ステータス管理者またはスーパーユーザは、このユーザーが明示的にグループに追加されることなく、すべてのものへのアクセスを持っていることを意味します。 – Hisagr

+0

これは、条件付きで管理者がHTMLに関係なく表示することを許可していないという事実は変わりません。 –

+0

これは、権限ではなくグループ名を使用しているためです。特定の権限を設定したら、{%if user.is_authenticated%}を確認する必要があります。詳細はこちらhttps://docs.djangoproject.com/en/1.11/topics/auth/default/#all-authentication-views – Hisagr

答えて

0

{% if request.user|has_group:"moderator" and if request.user|has_group:"admin" %} 
    <p>User belongs to group moderator or admin</p> 
{% else %} 
    <p>User doesn't belong to moderator or admin</p> 
{% endif %} 
+0

はい、私はこの代替案を自分で考え出したのです。私が最初にやったときにはうまくいかなかったけど、いくつか変更したらうまくいった。 –

関連する問題