fromdjango.confimportsettingsfromdjango.core.exceptionsimportImproperlyConfiguredfromdjango.httpimportHttpResponsefromdjango.utils.deprecationimportMiddlewareMixinfrom.utilsimportget_view_nameclassXViewMiddleware(MiddlewareMixin):""" Add an X-View header to internal HEAD requests. """defprocess_view(self,request,view_func,view_args,view_kwargs):""" If the request method is HEAD and either the IP is internal or the user is a logged-in staff member, return a response with an x-view header indicating the view function. This is used to lookup the view function for an arbitrary page. """ifnothasattr(request,"user"):raiseImproperlyConfigured("The XView middleware requires authentication middleware to ""be installed. Edit your MIDDLEWARE setting to insert ""'django.contrib.auth.middleware.AuthenticationMiddleware'.")ifrequest.method=="HEAD"and(request.META.get("REMOTE_ADDR")insettings.INTERNAL_IPSor(request.user.is_activeandrequest.user.is_staff)):response=HttpResponse()response.headers["X-View"]=get_view_name(view_func)returnresponse