from django.contrib.auth.decorators import permission_required
from django.utils.decorators import method_decorator
class EnvCreate(CreateView):
model = Capacity.models.Env
fields = ["name","dns","manager"]
template_name_suffix = '_create_form'
@method_decorator(permission_required('Capacity.add_env'))
def get_success_url(self):
return reverse("envapps", kwargs={"envid": self.object.pk})
我想允許用戶只有在有權限的情況下才能添加'env'。
我已經閱讀了許多消息和博客,並且執行上述操作的方法如上所述。
但處處訊()正在被使用,但我想get_success_url(不知道這是問題)Django permission_required decorator method_decorator在CreateView for get_success_url(self)
的錯誤,我得到當我嘗試創建ENV(由誰擁有權限的用戶)之前使用它我得到,
TypeError at /Capacity/create/
_wrapped_view() takes at least 1 argument (0 given)
Request Method: POST
Request URL: http://172.16.68.20:7000/Capacity/create/
Django Version: 1.6.1
Exception Type: TypeError
Exception Value: _wrapped_view() takes at least 1 argument (0 given)
Exception Location: /usr/lib/python2.6/site-packages/django/utils/decorators.py in _wrapper, line 29
任何想法是什麼我做錯了什麼或可以解決什麼?
得到了解決方案。我不必在get_success_url之前添加裝飾器,而只需添加一個調度函數,如上面[鏈接]給出的鏈接所示(https://docs.djangoproject.com/en/1.6/topics/class-based-views /前奏/#加飾的類)。所以我只是離開了get_success_url,就像以前一樣。並在新的調度功能之前添加了@method_decorator(權限....)。謝謝你的幫助 –