【发布时间】:2017-03-19 02:24:48
【问题描述】:
**编辑:当然,我突然意识到这与 UserPassesTextMixin 没有任何关系,因为在尝试直接访问 403 页面时会弹出此错误。仍然不知道该怎么做。
我正在尝试使用 UserPassesTestMixin 检查正在请求哪个模型的编辑视图并运行特定于该模型的测试以查看用户是否应该具有访问权限。还没有任何工作,我只是想了解一下这个 mixin 是如何工作的。在 test_func 中返回 false 后,视图尝试重定向到 /403/,但出现以下错误。
TypeError at /403/
permission_denied() missing 1 required positional argument: 'exception'
查看
class DeviceUpdate(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Device
template_name_suffix = '_update_form'
form_class = DeviceUpdateForm
def test_func(self):
return edit_permission_test(self.get_object())
...
perms.py
def edit_permission_test(model_object):
possible_models = ['Device',]
if isinstance(model_object, Device):
print('This is a Device model object')
return True
else:
print('This doesnt look like a Device model object')
return False
我似乎无法在互联网上找到任何有助于解决此错误的信息。
【问题讨论】:
-
附加到哪个视图
/403/url?你能包含那个视图的代码吗? -
我更改了主 urls.py 中的 url 模式。请参阅下面的答案。这看起来像一个好的解决方案吗?
标签: django django-views