Вы можете создать промежуточное программное обеспечение для этого. Вот пример, основанный на BrokenLinkEmailMiddleware
реализации:
from django.utils.deprecation import MiddlewareMixin
class BrokenLinkMiddleware(MiddlewareMixin):
def process_response(self, request, response):
if response.status_code == 404 and not settings.DEBUG: # for production
domain = request.get_host()
path = request.get_full_path()
referer = request.META.get('HTTP_REFERER', '')
if not self.is_ignorable_request(request, path, domain, referer):
ua = request.META.get('HTTP_USER_AGENT', '<none>')
ip = request.META.get('REMOTE_ADDR', '<none>')
# Store response in Database
YourModel.objects.create(domain=domain, path=path, ua=ua, ip=ip, referer=referer)
return response
И добавьте в него свои настройки:
MIDDLEWARE = [
...
'path.to.BrokenLinkMiddleware',
]