안녕하세요. 장고의 resolve 함수는 URL에 매핑되는 view에 대한 정보를 얻어올 때 쓰일법 해요. 예를 들어, url name은 무엇이고, view name이 무엇인지 등등입니다. ResolverMatch object를 리턴하는데요. 이것이 무엇인지도 간단하게 디버그 모드를 통해서 보겠습니다. 먼저, 대략적인 프로젝트 구조에요. djangoex 패키지에는 urls.py가 있어요. 그리고, app 패키지에는 views.py가 있어요. 이 두 개의 파일만 건드릴 거에요. 먼저, urls.py를 볼게요. path들이 있는데요. "/"에 대한 view 함수는 views.index로 잡혀있고, name은 "index"인 것을 알 수 있어요. 이 상황을 그림으로 그려 봅시다. 즉, path가 "/"인 경우..
전체 글 검색 결과
안녕하세요. 이번 시간에는 admin의 edit 메뉴에서 편집할 수 있는 필드들을 어떻게 보여주는지 알아보고 응용해 보도록 하겠습니다. 이전에 한 번 말씀을 드렸을지 모르겠지만, staff라고 해도 퍼미션에 is_superuser를 설정할 수 있는 권한이라던지, 비밀번호 등을 함부로 주면 안 될 겁니다. 이런 것을 방지하기 위해, 보여지는 필드들을 비활성화 시키는 방법이 있어요. 그 방법도 같이 알아볼게요. 먼저, get_fieldsets를 오버라이드 해 보겠습니다. obj가 None이면 self.add_fieldsets를 deepcopy한 것을 리턴합니다. 그게 아니라면, self.fieldsets를 deepcopy한 것을 리턴합니다. self.add_fieldsets를 먼저 봅시다. fields가 u..
안녕하세요. 이번 시간에는 shutil의 rmtree와 os의 rmdir에 대해서 간단하게 알아보겠습니다. 먼저, rmtree는 폴더 안에 있는 내용들을 재귀적으로 삭제합니다. 현재, 제 working directory에는 디렉토리 a와 디렉토리 b가 있습니다. 각각의 디렉토리 안에는 1.txt가 있어요. 여기서, 우리는 디렉토리 "a"에 있는 것들을 모두 삭제하려고 해요. 이 때, shutil의 rmtree를 쓰시면 됩니다. test.py의 2번째 줄은, 디렉토리 a와 a 안에 있는 것들을 재귀적으로 삭제합니다. 뭔가 위험해 보이네요. 그런데, 3번째 줄에, shutil.rmtree.avoid_symlink_attacks가 있는데요. 이것을 출력하고 있어요. 이 값이 True인 경우, 구현이 심볼릭 링..
여태까지 저는 프로젝트 내에서 특정 패턴들을 다른 패턴으로 바꿀 때, notepad++를 이용하였습니다. pycharm에서 쉽게 할 수 있는 방법이 없을까요? 사실, intellij에도 적용되는 방식이니, 잘 따라하시면 좋습니다. 특히, 프로젝트 내에 있는 모든 디버그용 주석을 풀어버린다던지, 주석을 한꺼번에 설정할 때 매우 편리하게 쓸 법 합니다. regex를 이용해서 전체 바꾸기를 이용하면 정말 편하기 때문입니다. 먼저 디렉토리 안에는 1.txt와 main.py, a.py가 있어요. 1.txt에는 print('gahui')가 있습니다. 다음에, main.py에는 print('1.txt')가 있고, loop를 돌면서 i의 값을 출력하는 부분이 있습니다. a.py에는 2를 출력하는 것이 있습니다. 이 쯤..
안녕하세요. 이번 시간에는 X-FORWARDED-FOR 헤더에 대해서 간단하게 알아봅시다. 저는 root address에 접근했을 때, index 함수가 실행되게 해 놓았는데요. HTTP_X_FORWARDED_FOR라는 정보가 있는 경우에, 6 ~ 7번째 줄을 수행하고, 그렇지 않으면 REMOTE_ADDR을 얻어옵니다. django의 문서에 따르면 이것은 client의 ip 주소입니다. 요래 거쳐온 경우를 생각해 봅시다. client에서 보낸 요청이 1을 거쳐서 서버로 들어갔다 해 보겠습니다. 장고 서버 입장에서 보았을 때에는 클라이언트가 client로 표시된 것이 아닙니다. 단지, 1을 거쳐서 갔기 때문에, 1이 되는데요. 이 때 remote_addr은 1의 ip가 찍힐 겁니다. 실제 client의 i..
최근댓글