안녕하세요. 이번 시간에는 django의 Filefield들에 쓰는 upload_to에 대해 간단하게 알아보겠습니다. 문서도 같이 보면 좋겠습니다. 먼저, item_file_path 함수를 보겠습니다. instance와 filename 2개를 받습니다. instance는 생성된 레코드의 id입니다. 그리고, filename은 파일의 이름을 의미합니다. 문서의 표를 참고하시면 됩니다. 이 두 정보를 받아서 리턴하는 값은 item/{레코드_id}/{파일이름}이 됩니다. 다음 11번째 줄입니다. id와 file을 입력으로 받습니다. id라는 필드를 추가해 주었는데요. 왜 추가했는지는 밑에서 후술하겠습니다. 이제, 파일을 업로드 해 보겠습니다. 파일 선택을 한 다음에 SAVE를 눌러보겠습니다. 데이터베이스에 저..
장고 검색 결과
debug=True로 세팅하고 admin page를 켜 보면 잘 켜집니다. 그런데 production 환경에서 debug 옵션을 True로 줄 리는 없을 겁니다. debug=False로 세팅하는 경우 몇 가지 세팅을 하셔야 하는데요. ALLOWED_HOSTS와 CORS_ALLOWED_ORIGINS 세팅을 해 주셔아 합니다. 먼저 django-cors-headers를 설치 후에 아래와 같은 설정을 해 주었습니다. ALLOWED_HOSTS에 "localhost"를 넣었습니다. 다음에 "corsheaders.middleware.CorsMiddleware"를 CommonMiddleware 위에 넣었습니다. 다음에, CORS_ALLOWED_ORIGINS에 "http://localhost:8000"을 추가해 주었습..
admin에서 선택된 포스트들을 추천 포스트로 올리고 싶습니다. 어떻게 하면 좋을까요? 물론, 일일히 포스트의 상세 정보에 들어가서 해도 되겠지만, 여간 귀찮은 것이 아닙니다. 그럴 때 할 수 있는 것은, admin의 action을 이용하는 것입니다. 먼저, 모델 Post는 위와 같습니다. user는 FK로 정의되어 있습니다. 다음에 content, created, view, recommend_flag가 정의되어 있습니다. 다음에 Action이라 하면, Action 밑에 뜨는 것들을 말하는데요. 예를 들자면, Delete selected posts라고 하면, 선택된 포스트들을 모두 삭제합니다. 이를 한 번에 처리할 수 있는 것이 action인 셈입니다. 문제에서의 요구 사항은 선택된 post들의 reco..
우리는 장고에서 오른쪽에 나타나는 list filter를 custom하게 만들고 싶습니다. 예를 들어, ㄱㄴㄷ 순으로 본다던지. 이러한 경우, 우리는 custom하게 필터를 줄 수 있는데요. 그 방법에 대해 알아보겠습니다. 먼저 admin의 SimpleListFilter를 override합니다. 저는 유저 이름을 가지고 필터를 만들 것이니, class 이름은 UserNameFilter로 하겠습니다. title과 paramter_name은 각각 "username", "username"으로 하였는데요. 이 둘의 역할은 추후에 설명하겠습니다. 여기에서는 2개의 함수를 override를 할 것인데요. lookups와 queryset 이 둘을 override 할 겁니다. 먼저, lookups는 필터에 어느 값이 ..
장고에서, 조건을 만족하는 오브젝트가 있으면 해당 오브젝트를 리턴하고, 없으면 404 처리를 하고 싶습니다. 이 때 저는 보통 어떻게 했냐면, exist 하지 않으면 404 response를 날리고, 아니면, 오브젝트르 가져와서 리턴했습니다. 그런데, 이를 좀 더 간단하게 처리해 줄 수 있는 함수가 있는데요. get_object_or_404입니다. 먼저 post 모델은 위와 같습니다. 작성자인 user는 User를 참조하는 Foreign key를 들고 있습니다. 이 User는 장고에서 기본으로 제공되는 Auth의 User를 의미합니다. 다음에 post는 포스트 내용을 의미해요. 뭔가 네이밍이 이상한 것 같지만 넘어갑시다. Post 관련 admin View에서, 포스트를 쓴 유저 이름을 얻어오게 바꾸었습니..
최근댓글