How to check in template whether user belongs to some group?
It is possible in a view which is generating the template but what if I want to check this in base.html which is an extending template (it does not have it's own view function)?
All of my templates extends base.html so it is not good to check it in each view.
The base.html contains upper bar, which should contain buttons depending on in which group logged user is (Customers, Sellers).
In my base.html is:
{% if user.is_authenticated %}
which is not enough because I have to act differently to users from Customers and users from Sellers.
So the thing I want is:
{% if user.in_group('Customers') %}
<p>Customer</p>
{% endif %}
{% if user.in_group('Sellers') %}
<p>Seller</p>
{% endif %}
You need custom template tag:
from django import template
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
In your template:
{% if request.user|has_group:"mygroup" %}
<p>User belongs to my group
{% else %}
<p>User doesn't belong to mygroup</p>
{% endif %}
Source: http://www.abidibo.net/blog/2014/05/22/check-if-user-belongs-group-django-templates/
Docs: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With