fromdjango.confimportsettingsfromdjango.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 responsewith an x-view header indicating the view function. This is used to lookup the view function for an arbitrary page. """asserthasattr(request,'user'),("The XView middleware requires authentication middleware to be ""installed. Edit your MIDDLEWARE%s setting to insert ""'django.contrib.auth.middleware.AuthenticationMiddleware'."%("_CLASSES"ifsettings.MIDDLEWAREisNoneelse""))ifrequest.method=='HEAD'and(request.META.get('REMOTE_ADDR')insettings.INTERNAL_IPSor(request.user.is_activeandrequest.user.is_staff)):response=HttpResponse()response['X-View']=get_view_name(view_func)returnresponse