2020-04-08 Erstellt: windows10 / Python-3.8.2-amd64 / Django-3.0.4
Das Protokollieren der IP-Adresse der Zugriffsquelle reicht Django nicht aus, um das Benutzerverhalten zu analysieren. Um einen Benutzer eindeutig zu identifizieren, ist es einfach zu protokollieren, wer auf dem HTTP-Server darauf zugegriffen hat.
Passen Sie die Antwortheader so an, dass die Django-Benutzer-ID in den HTTP-Serverprotokollen erhalten bleibt. Hier erfahren Sie, wie Sie die Django-Benutzer-ID zum Anforderungsheader in der generischen Klassenansicht hinzufügen.
Referenz https://blog.howtelevision.co.jp/entry/2014/09/05/170917
Wenn Sie neu in Django sind, klicken Sie hier. Praktisches Tutorial zu Django in 10 Minuten
Fügen Sie die Benutzer-ID des Antwortheaders hinzu, die Sie der generischen Ansichtsklasse hinzufügen möchten.
custom_views.py
class CustomListView(generic.ListView):
def dispatch(self, *args, **kwargs):
response = super().dispatch(*args, **kwargs)
response['userid'] = self.request.user
return response
Anstatt ListView zu erben, erben Sie CustomListView und deklarieren Sie die tatsächlich zu verwendende Ansichtsklasse.
views.py
from .custom_views import *
from .models import MyClass
from django.contrib.auth.mixins import LoginRequiredMixin
class MemoListView(LoginRequiredMixin, CustomListView):
model = MyClass
Das gleiche kann mit anderen Ansichtsklassen sowie ListView gemacht werden.
Wenn Sie die Einstellungen eines HTTP-Servers wie Nginx ändern und den neu erstellten Antwortheader im Protokoll belassen, wird die Zugriffsquelle im Protokoll aufgezeichnet.
Das Ende