django를 처음 접했을 때, 헷갈리던 것이 null=True 옵션과 blank=True 옵션이였습니다. 이 둘에 대해 간단하게 알아보겠습니다. 먼저, null=True 값을 주고 migration을 해 보겠습니다. myapp_post 테이블을 생성하는 쿼리를 봅시다. 그러면 post에 NULL이 붙어 있는 것을 볼 수 있는데요. 이는 널 값을 허용한다는 의미입니다. 저는 sqlite를 써서 쿼리가 요래 생성되었습니다. 그냥 아무런 값도 추가하지 않았더니 NULL이 들어간 것을 볼 수 있습니다. NULL 값을 추가한 다음에 장고 어드민에서 해당 포스트를 수정해 보겠습니다. 빈 값으로 냅뒀더니, This field is required 라고 뜹니다. 이는 null=True 옵션이 Form에서 빈 값을 허..
웹/장고 검색 결과
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가 저장되어 있습니다. 세션 키와 세션 데이터는 어떻게 생성되는 것일까요? 그리고, 세션 키는 어디에 쓰이는 것일까요? 먼저 세션 키는 브라우저의 쿠키..
최근댓글