장고에서, 조건을 만족하는 오브젝트가 있으면 해당 오브젝트를 리턴하고, 없으면 404 처리를 하고 싶습니다. 이 때 저는 보통 어떻게 했냐면, exist 하지 않으면 404 response를 날리고, 아니면, 오브젝트르 가져와서 리턴했습니다. 그런데, 이를 좀 더 간단하게 처리해 줄 수 있는 함수가 있는데요. get_object_or_404입니다. 먼저 post 모델은 위와 같습니다. 작성자인 user는 User를 참조하는 Foreign key를 들고 있습니다. 이 User는 장고에서 기본으로 제공되는 Auth의 User를 의미합니다. 다음에 post는 포스트 내용을 의미해요. 뭔가 네이밍이 이상한 것 같지만 넘어갑시다. Post 관련 admin View에서, 포스트를 쓴 유저 이름을 얻어오게 바꾸었습니..
웹 검색 결과
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번 호출될 줄..
최근댓글