본문 바로가기
TTL/5주차 ~ 8주차 TIL (9.26 ~ 10.21)

2022-09-27 TIL (장고 admin 페이지에 접속 로그 남기기)

by dev_junseok 2022. 9. 28.

오늘은 장고의 admin페이지 기능 중, 언제 어느 템플릿에 접속하였는지 로그를 데이터베이스에 남기는 기능을 만들어보겠습니다.

 

먼저 models.py에 AccessLog 테이블을 만들어서 안에 필드 두개를 넣어주도록 하겠습니다.

  • created_at : 데이터가 생성된 시간을 알 수 있도록 datetimefield 사용
  • location : 사용자가 어떤 template에 접근했는지 알 수 있도록 charfield 사용

 

created_at = models.DateTimeField("접속 시간", auto_now_add=True)
location = models.CharField("접속 경로", max_length=50)

이렇게 생성된 테이블을 장고에 등록해주도록 하겠습니다.

 

python manage.py makemigrations
python manage.py migrate

이제 생성한 테이블을 admin.py에 등록하도록 하겠습니다.

 

from django.contrib import admin
from .models import AccessLog

# Register your models here.
admin.site.register(AccessLog) # 이 코드가 나의 AccessLog를 Admin에 추가 해 줍니다

이제 제일 중요한 views.py를 편집하도록 하겠습니다.

 

from os import access
from django.shortcuts import render
from introduce.models import AccessLog

def first_view(request):
    
    access_log = AccessLog()
    access_log.location = "introduce"
    access_log.save()
    
    return render(request, 'introduce.html')

마지막으로 models.py에 함수를 하나 추가해서 시각이 예쁘게 보이도록 해주겠습니다.

 

    def __str__(self):
        return f"{self.created_at} / {self.location}"

잘 나오는군요!