现在我使用这个应用程序的权限检查permision:django-rules如何写的一类基于视图中的装饰 - 基于对象的视图
然而,至今尚未更新了一年多并且没有“新”(自django 1.3)基于类的视图的装饰器。我希望能够在urls.py像这样使用:
url(r'^casos/(?P<pk>\d+)/editar/$', rules_permission_required('lawsuits.logical_check', raise_exception=True)(CaseUpdateView.as_view()), name='case_edit'),
我无法弄清楚如何获得从装饰类基于视图的对象。你们有什么想法吗?这是我到目前为止:
from django.utils.decorators import available_attrs
def rules_permission_required(perm, queryset=None, login_url=None, raise_exception=False):
def wrapper(view_func):
@wraps(view_func, assigned=available_attrs(view_func))
def inner(request, *args, **kwargs):
#view_func is the class based view -> <function MyEditView at 0x94e54c4>
print view_func.get_object() # doesnt work
print view_func(request, *args, **kwargs).get_object() # doesnt work either
#any ideas?
if not request.user.has_perm(perm, obj=obj):
return redirect_to_login(request, login_url, raise_exception)
return view_func(request, *args, **kwargs)
return inner
return wrapper
非常感谢提前!
有人能解释为什么切换到基于类的观点是一种进步,当它过于复杂化这样的事情。如果你问我,似乎是朝着错误的方向迈出的一步。 – fred 2014-01-10 14:34:19