데이터베이스를 공부하는 방법 중에 하나는, 잘 구현된 라이브러리를 보고 어떤 구조로 데이터베이스를 설계했는지 보는 것이라고 생각합니다. 장고에서, 카데고리를 추가해야 할 일이 있었는데요. 저는 항상 하던 것과 같이 self Foreign key와 name만을 필드로 가지는 모델을 정의했습니다. 그런데, 찾다보니 mptt라는 것이 있었는데요. 간단하게 소개해 드리겠습니다. 먼저 계층형 쿼리에 대한 것부터 알아야 하는데요. 흔히 댓글, 대댓글이라던지 1차, 2차, 3차 카데고리와 같은 것들이 계층형 구조라고 할 수 있어요. 여기서 질문을 하나 던져볼게요. 대분류가 Game에 속하는 글은 어떤 것인가? 예를 들자면, 저는 btd5에 대해 썼는데요. btd5의 대분류 역시 Game입니다. 그러면 btd5는 Ga..
Django 검색 결과
django에서, 파일을 form에 넣었을 때, 어떤 경우에는 파일 이름이 바뀌었습니다. 이는 get_valid_filename 때문입니다. 이게 무엇을 하는 것인지 간단하게 보겠습니다. 먼저, 양 끝에 붙은 공백을 제거한 다음에, 중간에 있는 공백들은 모두 _로 치환합니다. 다음에 re.sub인데요. 앞에 (?u)가 붙어있고, 뒤에 [^-\\w.]이 있습니다. 무엇을 의미할까요? 먼저, re.sub는 특정 패턴에 걸려들면, 다른 패턴으로 치환하는 역할을 합니다. 2번째 인자에 빈 문자열이 들어갔기 때문에, 1번째 패턴에 걸리면, 빈 문자열로 치환하겠구나. 정도는 알 수 있습니다. 예를 들어, s="abcde"라고 한다면, s=re.sub(r"a", "", s)의 결과는 "bcde"가 나옵니다. 패턴 "..
django에서 유저 권한에 대해서 알아보겠습니다. 그리고 superuser와 staff에 대해서도 간단히 알아보겠습니다. 먼저, createsuperuser로 슈퍼 유저를 생성합니다. 그 다음에 superuser로 로그인 해 보겠습니다. Permission만 보겠습니다. Active는 건너 뛰기로 하고, Staff와 Superuser가 있습니다. Staff는 어드민 사이트에 로그인 할 수 있는 계정입니다. 그리고, Superuser는, 모든 권한을 가지고 있는 유저입니다. 리눅스로 치면 root user 정도라고 생각하시면 편합니다. 그만큼 책임이 매우 많이 따른다는 의미입니다. 이제, chokw2 계정을 하나 생성하겠습니다. Staff 계정으로 생성한 다음에 CHOKW2로 로그인 해 보겠습니다. 그러..
보통 스케쥴러 같은 것을 초기화 할 때 app config 등을 이용하게 되는데요. Appconfig의 ready 메서드를 오버라이드 해서 구현합니다. 사실 공식 문서를 읽어보면, init과 관련된 설명이 많은 것으로 보아, 무언가를 초기화 하는 것과 관련이 있다는 것 정도는 눈치채실 수 있습니다. 프로젝트 구조를 보겠습니다. 다른 것은 없고, myapp에서 apps.py와 config의 settings.py만 중점적으로 보겠습니다. 먼저, INSTALLED_APPS에 myapp을 추가합니다. 다음에, MyappConfig라는 클래스에, ready를 오버라이드 하면, 실행되는 과정에서 myapp패키지의, MyappConfig 클래스에 있는, ready 함수가 호출될 겁니다. 그런데, 1이 1번 호출될 줄..
django에는 django_session 테이블이 있습니다. 말 그대로 세션 데이터를 저장하는 테이블인데요. 어떤 데이터가 저장되는지 알아보겠습니다. 저는 postgres 14.0, django는 4.0대 버전을 쓰고 있습니다. 먼저, 엣지로 django admin 페이지를 열어서, 어드민 계정으로 로그인 하였습니다. 다음에, 파이어 폭스로도 똑같이 어드민 계정으로 로그인 하였습니다. 이제, django의 session 테이블에 어떤 데이터가 저장되어 있는지 보도록 하겠습니다. session_key하고 session_data, 그리고 expire_date가 저장되어 있습니다. 세션 키와 세션 데이터는 어떻게 생성되는 것일까요? 그리고, 세션 키는 어디에 쓰이는 것일까요? 먼저 세션 키는 브라우저의 쿠키..
최근댓글