Django projemde özel bir izin uygulaması uyguluyorum ve belirli bir nesne örneği için oturum açmış bir kullanıcının izinlerini denetleyen özel bir şablon etiketinin nasıl uygulanacağı konusunda kayboluyorum. Çekin sonucuna dayalı bir HTML parçasını gösterir.if..else özel şablon etiketi
Şimdi ne var (yalancı kod) 'dir:
{% check_permission request.user "can_edit" on article %}
<form>...</form>
{% endcheck %}
('check_permission:' özel şablon etikettir).
Şablon etiketi, kullanıcı, izin ve nesne örneğini alır ve ilişikteki HTML'yi (form) döndürür. Bu şu anda iyi çalışıyor. Ben yaklaşık the assignment tag okudum
{% if check_permission request.user "can_edit" on article %}
<form>...</form>
{% else %}
{{ article }}
{% endif %}
ama benim korkum bu (önceki üzerine yazmamaya anlam ile bağlam değişken alanı kirletme olduğunu ifade etti:
Ne Ancak yapmak istediğim bir şey gibidir izin içeriği değişkenleri. Başka bir deyişle, içerik değişkenleri farklı düzeylerde tanımlandığından (benim durumumdaki görünüm, ara katman ve şimdi bu atama şablonu etiketi), sürdürülebilirlik konusunda endişeleniyorum.
Teşekkürler, filtreler gerçekten bir seçenek olabilir. Ancak farklı izinlerin olduğunu tahmin ediyorum (sadece temel CRUD değil, bazı çok spesifik olanları da değil), aynı zamanda özel şablon filtrelerinin eşit bir miktarını oluşturmak zorundayım. Belki de özel izinler modelimi yeniden düşünmeliyim. Bir filtreye birden fazla argüman iletmenin zor olduğunu söylerseniz, bunun mümkün olduğunu mu söylüyorsunuz? Bunun olmadığını düşünmüştüm, bu yüzden biraz açıklayabilir misin? – LaundroMat
Gelecek ziyaretçilere güncelleme: Sanırım zincirleme filtrelerle (ör. {{Request.user | has_permission: "entries.entry.can_edit," | has_permission_on: article}} '.) Özel has_permission şablon filtresi ile çözmeyi deneyeceğim. kullanıcı ve gerekli izni verir, has_permission_on sonra bu değerleri alır, bunları makale değişkenine karşı kontrol eder ve Doğru veya Yanlış döndürür. – LaundroMat