Dapatkah saya menggunakan pemeriksaan izin aplikasi Auth di dalam templat di Django? (Saya ingin menampilkan formulir sederhana di akhir template untuk pengguna yang memiliki hak istimewa)
Dan yang lebih penting, haruskah saya melakukannya sama sekali atau apakah ini bukan "cara Django"?
django
django-authentication
Daniel
sumber
sumber
Jawaban:
Jika Anda ingin memeriksa izin di templat, kode berikut sudah cukup:
{% if perms.app_label.can_do_something %} <form here> {% endif %}
Dimana model mengacu pada model yang pengguna memerlukan izin untuk melihat formulirnya.
Lihat https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions untuk contoh lainnya.
(Ini membutuhkan prosesor konteks berikut harus diaktifkan:
django.contrib.auth.context_processors.auth
)sumber
perms.app_label.foobar
akan selalu benar, meskipun Anda salah mengeja nama izin.Diuji pada Django 2.0 +
Jika Anda ingin melihat semua izin yang dimiliki pengguna yang masuk, pada template Anda (.html), cetak:
Atau
{{ perms }}
Untuk memeriksa apakah pengguna memiliki izin, gunakan:
Misal:
Di sini: Pemanfaatan adalah nama Aplikasi saya. Faktur adalah nama model.
Perhatikan bahwa secara umum, akan ada 4 jenis izin:
Juga, jika anda ingin melihat semua perizinan yang dimiliki pengguna karena grup tempatnya berada, luncurkan Django shell ...
user = User.objects.get(username='somename') user.get_group_permissions()
Di sini, semua izin yang terdaftar, adalah karena grup tempatnya berada.
sumber
Jika Anda membutuhkan lebih banyak perincian dalam memeriksa izin (pada objek tertentu misalnya), lihat ekstensi ini: http://django-authority.readthedocs.org/en/latest/check_templates/
sumber
maaf untuk 'menggali' posting ini tetapi saya mempunyai masalah terkait dengan izin. Lihat posting saya: Django: logika tidak diterapkan dengan baik dalam templat menggunakan izin (perm
karena Arindam merasa sangat nyaman dengan konsep ini, saya harap dia atau orang lain dapat membantu saya
perms tidak berlaku bahkan jika nilainya benar ketika saya mencari {{perms}} di template saya itu mengembalikan sebuah objek tapi bukan daftar izin jika saya mencari {{perms.randomization.can_randomize}} itu mengembalikan False (atau True ) itulah nilai bagus aplikasi saya dinamai pengacakan dan saya mendefinisikan izin can_randomize dalam model Pengacakan (menggunakan meta) yang merupakan bagian dari aplikasi pengacakan saya
Saya memeriksa settings.py tetapi semua jahitannya ok
sumber