我需要為我的 Django web-app 的某些功能創建基于用戶的訪問權限。
我已經想出了如何限制對不是超級用戶的用戶的訪問,如下所示:
{% if user.is_staff %}
<a href="{% url 'creditControlHome' %}">Credit Control</a>
{% endif %}
有沒有辦法根據名字做到這一點?
例如,“如果 user.name = George and Bill and Clint”那么他們可以看到導航欄的那部分嗎?
uj5u.com熱心網友回復:
有幾種方法可以做到這一點。您可以為用戶添加身份驗證組,然后檢查用戶是否屬于該組。例如,在您的視圖中,您可以將用戶添加到這樣的組中:
from django.contrib.auth.models import Group
user_group = Group.objects.get_or_create(name='some_group_name')
user_group.user_set.add(user_obj)
然后您可以使用自定義模板標簽來檢查當前用戶是否屬于某個組:
project_dir/app_name/templatetags/sometag.py
from django import template
register = template.Library()
@register.filter
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
然后在你的模板中,你可以像這樣使用這個模板標簽:
{% load sometag %}
{% if request.user|has_group:"some_group_name" %}
<a href='#'>Your Link here</a>
{% endif %}
如果您不喜歡 templatetag 方法,您也可以過濾視圖中的用戶組并將其用作標志以在模板中顯示您的專案。
如果這對您不起作用,那么您可以查看Permissions。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411471.html
標籤:
