2012-06-07 11 views
6

Guardian'ın allow_required ile dekore etmeye çalıştığım bir CB DeleteView var. Giriş, oturum açmış olan kullanıcı için ve DeleteView nesnesi için olmalıdır. Guardian doktorları bu konuda çok net değil, bu yüzden kimsenin açıklığa kavuşup kavramayacağını merak ediyorum.Django Guardian - Sınıf tabanlı bir görünümle bir allow_required dekoratör nasıl kullanılır?

+0

Sorunuz buna benzer, bir göz atın. http://stackoverflow.com/questions/6069070/how-to-use-permission-required-decorators-on-django-class-based-views –

cevap

0

Sınıf tabanlı bir görüntünün her örneğini dekore etmek için sınıf tanımının kendisini kendiniz dekore etmeniz gerekir. Bunu yapmak için benim çözüm (davanızı uyarlanmış) olan

class ExampleView(TemplateView): 
    template_name = 'Example.html' 

    @method_decorator(login_required) 
    def dispatch(self, *args, **kwargs): 
     return super(ExampleView, self).dispatch(*args, **kwargs) 
+0

Bunun farkındayım. Ancak, özellikle kullanıcı ve model nesnesinin Guardian izin dekoratörüne CBV'de nasıl ekleneceğini soruyorum. Teşekkürler! –

4

Burada hemen hemen aynı sorunla karşılaştı ve, class.For xample gönderilmesi() yöntemine dekoratör geçerlidir:

görüşlerini .py Eğer accept_global_perms parametre geçebilir

class MyModelDeleteView(DeleteView): 
    model=MyModel 

    @method_decorator(permission_required_or_403('myapp.delete_mymodel', 
     (MyModel, 'slug', 'slug'), accept_global_perms=True)) 
    def dispatch(self, *args, **kwargs): 
     return super(MyModelDeleteView, self).dispatch(*args, **kwargs) 

Not varsayılan olarak Yanlış olduğunu. 'myapp.delete_mymodel' kullanıcılarına MyModel sınıfındaki herhangi bir nesneyi silmek için izin verir. Bu, örneğin, moderatörler için yararlı olabilir.

.

İlgili konular