9. 기본 옵션들
•다양한 기본 옵션을 잘 활용하면
복잡한 내용을 매우 간단히 줄일 수 있음
•unique, validators 등은
매우 유용한 활용법을 지님
•editable 은 object 수정 페이지의
불필요 필드를 숨겨줌
10. 기본 기능 적극 활용
•Actions 기능 활용
•Filter 기능 활용
•Search 기능 활용
•date_hierarchy 기능 활용
•fieldsets 기능 활용
•list_display_links
11. Actions
•Model 의 method 를 호출 할 수 있음
•별도 페이지 생성을 최소화 가능
•선택된 row들을 queryset으로
하나씩 조회하여 처리
•https://docs.djangoproject.com/en/2.0/
ref/contrib/admin/actions/
12. Filter
•이렇게 별도의 커스텀 필터를 만들 수 있음
•admin 페이지를 벋어나지 않도록
기본 기능을 재정의 해서 사용
•필터의 활용방법은 사이트 상황에 맞춰 직접 제
작
13. Search
•가장 유용하다고 생각한 기능
•본 객체의 필드 조회는 당연,
연결된 필드도 조회할 수 있음
•연관된 필드의 내용 조회가 가능함
다양한 방법으로 활용 가능
•남용하는 것은 무거운 쿼리를 만들 수 있음 주
의!
14. date_hierarchy
•날짜를 모아서 정리해 줄 수 있음
•이 발표 자료를 정리하기 전에는 몰랐던 내용
(심지어 filter 기능을 재정의 해서 썼었음)
•주별 정리 기능은 없어서 조금 아쉬움
15. fieldsets
•default 를 잘 정의 해두면 더 유용함
•개발자 보다 관련팀들에게 유용한 기능
•너무 많은 옵션은 결국 안쓰게 되는 문제를 일
으킴
(잘못 손대서 잘못 될까 하는 두려움)
•admin 페이지를 활용하게 하기 위한 필수 팁
17. 상세 설명
•Pycon Korea 2017 | Django admin site를 커스텀하여 적극적으로 활용하기
•https://www.slideshare.net/bbayoung7849/
djangoadminsitecustomexample
•저는 혼자 고생 다하고 이 발표 자료를 찾았네요...
18. 추가 활용 팁
•Admin 페이지에서만 쓸 기능은 Admin 에서
•Import / Export 기능 모듈을 활용
•limit_choices_to : Relationships 에서 Limit 활용
22. Function Based
vs
Class Based
Which is Better between FBC
and CBV
김석훈님 발표 자료 참고
분 류 지네릭 뷰 이름 뷰의 기능 또는 역할
Base View View
가장 기본이 되는 최상위 지네릭 뷰입니다. 다른 모든 지네릭 뷰들은
View의 하위 클래스입니다.
TemplateView 템플릿이 주어지면 해당 템플릿을 렌더링해줍니다.
RedirectView URL이 주어지면 해당 URL로 리다이렉트시켜줍니다.
Generic
Display View
DetailView 객체 하나에 대한 상세한 정보를 보여줍니다.
ListView 조건에 맞는 여러 개의 객체를 보여줍니다.
Generic
Edit View
FormView 폼이 주어지면 해당 폼을 보여줍니다.
CreateView 객체를 생성하는 폼을 보여줍니다.
UpdateView 기존 객체를 수정하는 폼을 보여줍니다.
DeleteView 기존 객체를 삭제하는 폼을 보여줍니다.
Generic
Date View
ArchiveIndexView 조건에 맞는 여러 개의 객체 및 그 객체들에 대한 날짜 정보를 보여줍니다.
YearArchiveView 년도가 주어지면 그 년도에 해당하는 객체들을 보여줍니다.
MonthArchiveView 연, 월이 주어지면 그에 해당하는 객체들을 보여줍니다.
WeekArchiveView 연도와 주차(week)가 주어지면 그에 해당하는 객체들을 보여줍니다.
DayArchiveView 연, 월, 일이 주어지면 그 날짜에 해당하는 객체들을 보여줍니다.
TodayArchiveView 오늘 날짜에 해당하는 객체들을 보여줍니다.
DateDetailView
연, 월, 일, 기본키(또는 슬러그)가 주어지면 그에 해당하는 특정 객체
하나에 대한 상세한 정보를 보여줍니다.
4 / 12
23. FBV vs CBV
•김석훈님의 자료를 참고
https://www.slideshare.net/seokhunkim4/20171209pyconfbvcbv
•Rest Framework 를 사용하게 되면 CBV 를 사용하시는 것을 매우 권함
•적은 코드 및 예외 처리 등 이점이 매우 많음
38. 주관적인 경험담
•웹을 만든다는 것은 주로 서비스 개발을 의미
•담당자 혹은 PM 은 당장 동작하는 페이지를 요구
•하지만 일정은 고정되어 있고 개발 요구사항은 계속 변경 됨
•반복에 반복, 반복을 거듭하다 보면 망가지는 것은 내 몸
39. 개발자가 가장 잘하는 일을 하자
•자동화 = TDD, BDD
•빠른 확인 및 변화에 민첩하게 대
응
•기술적 접근
•간결하고 안전한 코드 생성
•임시방편 대응 자제
•결국은 자신 및 회사의 자산
40. DDP > BDD > TDD = X-DD
•Data Driven Programming
•개발 요구사항을 Model 별로 미리 정리 함
•Behavior Driven Development
•모델의 변화를 Model 에 함수로 정리 함
•Test Driven Development
•반복적으로 검증하며 개발함
41. 쉬운 것을 어렵게 만들지 말자
•data 기반 개발 잘 활용하기 = tdd 기반으로 검증하자
•잘 짜여진 tdd 만 보아도 주석과 인수인계가 대폭 줄어든다.
•프레임웍 소스 보기
•DB models 에 mixin 을 적극적으로 활용하자
•title, description 과 같이 매우 당연히 쓰는 것들의 코드를 줄이자.
57. Database Index
•도서관 전체의 책을 모두 확인한다면?
•관련된 내용을 정리하여 확인 할 내용을 줄임
•세부 내용은 index 를 확인 한 뒤 실제 데이터
접근
•cardinality : index 의 범위가 넓게 퍼지는 것
58. 대규모 서비스를 준비한다면?
•apache2 server-status , nginx stub_status 를 이해하자.
•어떤 서버를 얼만큼 준비해야할까? => locust 를 잘 활용하자
•계산이 많은 로직인지? I/O wait 가 많은 로직인지?
•DB 의 부하는 얼만큼 생기는지?
•django 는 db connection pool 이 없음
•생각보다 더 높은 max connection 수치를 설정해야 함
60. 웹 개발시 주의점
•DNS 갱신은 1일 이상 걸리는 것을 감안하고 옮긴다.
•브라우져의 캐시를 완벽하게 컨트롤 하기는 어렵다.
•파일명을 바꾸거나, 쿼리를 붙여 캐시 하지 않도록 하자
•한번의 요청으로 긴 처리 시간이 걸리는 작업은 반드시 별도로 분리시킨다.
•예를 들어서 전체 통계 계산 처리등 등
•브라우져 호환성
61. django 개발 주의점
•admin 툴에서 구현한 것은 update(), delete() method 호출 안됨
•환경별 설정 파일은 반드시 분리해서 관리할 것
•ForeignKey 에 너무 많은 키가 연결되는 경우 admin 페이지를 호출하는 것만
으로도 부하가 걸리는 경우가 많음 주의
•fixture 를 꼭 만들어서 공유할 것
•tdd 에서 assertQuerysetEqual 을 반드시 활용할 것
•model 에 classmethod staticmethod 등을 잘 활용하여 구현할 것