gpt4 book ai didi

django - 如何将 'exception' 参数传递给 403 View ?

转载 作者:行者123 更新时间:2023-12-02 17:20:49 24 4
gpt4 key购买 nike

**编辑:当然,我突然意识到这与 UserPassesTextMixin 没有任何关系,因为在尝试直接访问 403 页面时会弹出此错误。仍然不确定该怎么做。

我正在尝试使用 UserPassesTestMixin 检查正在请求哪个模型的编辑 View ,并运行特定于该模型的测试以查看用户是否应该具有访问权限。目前还没有任何效果,我只是想了解一下这个 mixin 是如何运作的。在 test_func 中返回 false 后, View 尝试重定向到/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())

...

权限文件

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

我似乎无法在互联网上找到任何有助于解决此错误的信息。

最佳答案

我认为这个问题只与如何为本地开发配置 url 模式有关。以前我的主要 urls.py 看起来像这样:

urlpatterns = [
url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name="home"),

...

# Your stuff: custom urls includes go here
url(r'^devices/', include('auto_toner.urls', namespace='auto_toner', app_name='auto_toner'), name="devices"),

url(r'^400/$', default_views.bad_request),
url(r'^403/$', default_views.permission_denied),
url(r'^404/$', default_views.page_not_found),
url(r'^500/$', default_views.server_error),


] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

如果 settings.DEBUG 为 True,我更改了 URL 以在模式中包含 kwargs。

if settings.DEBUG:
# This allows the error pages to be debugged during development, just visit
# these url in browser to see how these error pages look like.
urlpatterns += [
url(r'^400/$', default_views.bad_request, kwargs={'exception': Exception('Bad Request!')}),
url(r'^403/$', default_views.permission_denied, kwargs={'exception': Exception('Permission Denied')}),
url(r'^404/$', default_views.page_not_found, kwargs={'exception': Exception('Page not Found')}),
url(r'^500/$', default_views.server_error),
]
if 'debug_toolbar' in settings.INSTALLED_APPS:
import debug_toolbar

urlpatterns += [
url(r'^__debug__/', include(debug_toolbar.urls)),
]

关于django - 如何将 'exception' 参数传递给 403 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com