Django raising 404 with a message

后端 未结 9 1187
有刺的猬
有刺的猬 2020-12-19 05:31

I like to raise 404 with some error message at different places in the script eg: Http404(\"some error msg: %s\" %msg) So, in my urls.py I included:

<         


        
9条回答
  •  鱼传尺愫
    2020-12-19 06:18

    I figured out a solution for Django 2.2 (2019) after a lot of the middleware changed. It is very similar to Muhammed's answer from 2013. So here it is:

    middleware.py

    from django.http import Http404, HttpResponse
    
    class CustomHTTP404Middleware:
        def __init__(self, get_response):
            self.get_response = get_response
            # One-time configuration and initialization.
    
        def __call__(self, request):
            # Code to be executed for each request before the view (and later middleware) are called.
            response = self.get_response(request)
            # Code to be executed for each request/response after the view is called.
            return response
    
        def process_exception(self, request, exception):
            if isinstance(exception, Http404):
                message = f"""
                    {exception.args},
                    User: {request.user},
                    Referrer: {request.META.get('HTTP_REFERRER', 'no referrer')}
                """
                exception.args = (message,)
    

    Also, add this last to your middleware in settings.py: 'app.middleware.http404.CustomHTTP404Middleware',

提交回复
热议问题