Aiv*_*nF. 2 python django http-status-code-403 server
这是MyProj/urls.py 的内容:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('general.urls')), # Main app
]
handler403 = 'general.views.handler403'
handler404 = 'general.views.handler403'
Run Code Online (Sandbox Code Playgroud)
如您所见,两个处理程序都指向同一个视图,而我最需要的第一个视图不起作用!例如,其他用户的数据/obj/12显示默认浏览器403页面:
[22/Jan/2019 08:39:14] "GET /obj/12 HTTP/1.1" 403 0
但第二个运行良好并显示正确的页面(当尝试访问一些不存在的数据时/obj/768)。为什么以及如何解决?
调试模式关闭。我的 Django 版本是 2.0.6
更新。
handler403.py文件的内容:
from django.shortcuts import render_to_response
def handler403(request, *args, **argv):
print('Handler 403 was called!')
u = request.user
params = {
'user': u,
}
response = render_to_response('403.html', params)
response.status_code = 403
return response
Run Code Online (Sandbox Code Playgroud)
Handler 403 was called!当我尝试获取此页面时,永远不会打印该字符串。
我的猜测是您的意见返回 adjango.http.HttpResponseForbidden而不是引发django.core.exceptions.PermissionDenied异常。
PermissionDeniedhandler403只处理异常, a 原样HttpResponseForbidden返回。
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |