gpt4 book ai didi

python - 如何在 View 中捕获 django.http.request.DisallowedHost?

转载 作者:行者123 更新时间:2023-12-04 15:14:27 24 4
gpt4 key购买 nike

这个有效:

def index(request):

try:
# Do some stuff

except:
return render(request, 'something.html')

但是我怎样才能捕捉到错误:django.http.request.DisallowedHost

试过了,还是不行:

from django.core.exceptions import DisallowedHost

def index(request):

try:
# Do some stuff

except DisallowedHost:
return render(request, 'something.html')

最佳答案

请不要更换中间件或做一些其他奇怪的事情。这非常简单:DisallowedHost() 由在请求对象上调用 get_host() 的第一件事引发。通常,这是一个中间件,因为在请求/响应周期中过早地执行它会导致无法关闭或自定义。

因此首先在链中注入(inject)您的自定义中间件并在那里短路:

# File: main.middleware
from django.shortcuts import redirect
from django.core.exceptions import DisallowedHost


class FriendlyDisallowedHost:
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request, *args, **kwargs):
try:
checkhost = request.get_host()
except DisallowedHost:
return redirect("http://localhost/")

return self.get_response(request)

设置:

MIDDLEWARE = [
"main.middleware.FriendlyDisallowedHost",
# ... rest of middleware
]

关于python - 如何在 View 中捕获 django.http.request.DisallowedHost?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64579749/

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