본문 바로가기
DEV/Web 개발

Web 개발 :: 파이썬 django 모델 _TIL#20

by 올커 2022. 9. 27.

■ JITHub 개발일지  20일차

□  TIL(Today I Learned) ::

파이썬 Django Models 정의

1. Django 프로젝트를 생성하고 실행시켜 접속해보기


  - 오늘의 목표 : 파이참의 프로젝트 자동 생성 및 프로젝트 실행 기능 없이 명령어로만 문제 풀어보기
  - 사용할 명령어

python -m venv venv` : 가상 환경 생성하기
venv\scripts\activate` : (windows)가상 환경 접속하기
source ./venv/bin/activate` : (mac) 가상 환경 접속하기
pip install django` : django 패키지 설치하기
django-admin startproject $프로젝트이름 .` : 현재 경로에 원하는 이름으로 프로젝트 생성하기
python manage.py startapp $앱이름` : 원하는 이름으로 앱 만들기
python manage.py runserver` : 장고 프로젝트 실행하기
python manage.py makemigrations` : 데이터베이스 마이그레이션 파일 생성
python manage.py migrate` : 데이터베이스 마이그레이션 적용
python manage.py createsuperuser` : 관리자 계정 생성하기

① models.py에 AccessLog 테이블을 생성
- 필드
    - created_at : 데이터가 생성된 시간을 알 수 있도록 datetimefield 사용
    - location : 사용자가 어떤 template에 접근했는지 알 수 있도록 charfield 사용
② 생성된 테이블을 makemigrations / migrate 명령어를 통해 db에 반영
③ 생성한 테이블을 admin.py에 등록
④ 사용자가 introduce 페이지에 접속했을 때, 접속 로그를 남기기
- admin 페이지에서 로그를 봤을 때 언제 어떤 페이지에 접속했는지 알 수 있어야 합니다.
- 로그를 저장할 때는 어떤 탬플릿을 조회했는지도 확인할 수 있도록 해주세요
⑤ admin 페이지에 접속해서 접속 기록을 확인


class AccessLog(models.Model):
	"""
    1. default : 기본적으로 사용될 날짜를 사용자가 지정
    2. auto_now : 데이터가 수정 될 때마다 갱신됨
    3. auto_now_add : 데이터가 생성될 때 시간을 기록
    """
    created_ad = models.DateTimeField("접속 시간", auto_now_add=True)
    location = models.CharField("접속 경로", max_lenght=50)
    
    def __str__(self)"
    	return f"{self.created_at} / {self.locations}"

 

Field는 read_only 속성을 기본적으로 갖고 있다.

def introduce(request):
	# case 1
    """
    access_log = AccessLog()
    access_log.location = "introduce"
    access_log.save()
    """
    
    # case 2
    AccessLog.objects.create(
    	locations="introduce"
    )
    
    return render(request, 'introduce.html')

 

test 답안 : https://github.com/JayJin/sparta_test

 


□  TIF(Today I Felt) ::

  - 정확한 문제 이해와 간단한 개념만 잡혀있다면 별다른 패키지 없이도 풀 수 있는 문제를 붙잡고 있었다.

  - 조금씩 django의 구조가 이해되는듯 하지만, 하루가 너무 짧다...

 

 

 

 

반응형

댓글