Auth uygulamasının izin denetimini Django'da bir şablon içinde kullanabilir miyim? (Ayrıcalıklı kullanıcılar için şablonun sonunda basit bir form görüntülemek istiyorum)
Ve daha da önemlisi, bunu hiç yapmalı mıyım yoksa bu "Django tarzı" değil mi?
Auth uygulamasının izin denetimini Django'da bir şablon içinde kullanabilir miyim? (Ayrıcalıklı kullanıcılar için şablonun sonunda basit bir form görüntülemek istiyorum)
Ve daha da önemlisi, bunu hiç yapmalı mıyım yoksa bu "Django tarzı" değil mi?
Yanıtlar:
Şablonlardaki izinleri kontrol etmek istiyorsanız, aşağıdaki kod yeterli olacaktır:
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
Model, kullanıcının formu görmek için izinlere ihtiyaç duyduğu modeli ifade eder.
Daha fazla örnek için https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions adresine bakın .
Şu anda oturum açmış olan kullanıcının izinleri şablon değişkeninde saklanır
{{ perms }}
(Bu etkin olması için, aşağıdaki içerik işlemci gerektirir: django.contrib.auth.context_processors.auth
)
perms.app_label.foobar
açtıysanız, izin adını yanlış yazsanız bile her zaman doğru olacağını unutmayın.
Django 2.0 + üzerinde test edildi
Oturum açmış kullanıcının sahip olduğu tüm izinleri şablonunuzda (.html) görmek istiyorsanız, şunu yazdırın:
{{ perms.app_name }}
Veya
{{ perms }}
Kullanıcının izni olup olmadığını kontrol etmek için şunu kullanın:
{% if perms.app_name.change_model_name_lower_cased %}
Örneğin :
{% if perms.Utilization.change_invoice %}
Burada: Kullanım benim Uygulama adımdır. Fatura bir model adıdır.
Genel olarak 4 tür izin olacağını unutmayın:
Ayrıca, bir kullanıcının ait olduğu gruplar nedeniyle sahip olduğu tüm izinleri görmek istiyorsanız, Django kabuğunu başlatın ...
user = User.objects.get(username='somename')
user.get_group_permissions()
Burada listelenen tüm izinler ait olduğu gruplardan kaynaklanmaktadır.
İzinleri kontrol etmede daha fazla ayrıntıya ihtiyacınız varsa (örneğin belirli bir nesnede), şu uzantıya bakın: http://django-authority.readthedocs.org/en/latest/check_templates/