21 - 2학기/슬기로운 코딩생활

[TIL]2주차: bookmark앱 만들기_2, Blog 앱

wonny_dev 2022. 1. 12. 00:41

TAB 2021 겨울방학 학회활동 [슬기로운 코딩생활]

2주차 TIL입니다.

작성자 : 38기_서다원

ref: [파이썬 웹프로그래밍 실전편(저자:김석훈)]


https://axce.tistory.com/75

 

Django 장고 - Secret key 파일 분리하는 방법

장고 프로젝트를 Git에 업로드 하거나 배포할 때, 보안상으 이유로 Secret Key를 분리해야 합니다. 이번에는 Secret Key를 파일로 따로 관리하는 방법에 대해 알아보도록 하겠습니다. secrets.json 파일을

axce.tistory.com

실습한 코드를 그냥 깃허브에 올렸더니 secretkey가 노출되었다는 메일을 받아서 위 포스팅을 참고해서 secret key를 분리해 올렸다. 

 

2.4 URLconf 코딩하기

 

3개의 URL과 뷰가 필요함.


2.5 view 코딩

Bookmark 테이블에서 여러 레코드를 가져오려면 ListView 가 적합하고

한개의 레코드를 가져오기엔 DetailView 가 적합하다

views.py 를 작성해보자.

사용할 ListView와 DetailView를 가져오고 BookmarkLV 클래스와 BookmarkDV 클래스에 사용했다.


2.6 template

html을 간단히 작성했다.

여기서 {{ bookmark }} 템플릿 변수는 Bookmark 테이블의 특정 레코드 하나를 의미한다.


2.7 데이터 입력하고 확인

Admin 사이트에서 데이터를 두개 입력 하고 runserver 명령어를 통해

브라우저에서 확인을 해보았다.


Chapter 3. Blog 앱 만들기 

처음 만들 블로그앱의 기능은 포스트를 등록하고 읽을 수 있는 기능이다.

 

프로젝트는 이미 만들어뒀으니까 블로그 앱 만드는 것 부터 시작

$ python manage.py startapp blog

 

blog앱의 models.py 파일을 작성해주었다.

 

get_previous_by_modify_dt() : 장고의 내장함수

get_next_by_modify_dt() : ''

 

슬러그란?

페이지나 포스트 설명하는 핵심단어의 집합

페이지나 포스트의 제목에서 조사, 전치사, 쉼표 등을 빼고 띄어쓰기는 - 으로 대체해서 만들며 URL에 사용됨

슬러그를 URL 에 사용함으로써 검색 엔진에서 더 빨리 페이지를 찾아주고 검색엔진의 정확도를 높임

 

SlugField 필드타입:

URL에서 pk대신 사용되는 경우 많음

 

admin.site.register() 함수 말고 데코레이터를 사용

modify_dt 컬럼을 사용하는 필터 사이드바 보여주도록 지정

search_fields 는 검색 박스!

slug 필드는 title 필드를 사용해 미리 채워지도록 함.

 

마이그레이션 하고 admin 사이트를 켜보았다.

 

blog 앱에 post 테이블이 생겼다

post 테이블의 모습

 


3.2.3 URLconf 코딩

 

URLconf 를 코딩할 때에 mysite/urls.py 하나에만 코딩을 할 수도 있지만 

blog/urls.py 와 mysite/urls.py 2개의 파일에 코딩할 것임.

bookmark 앱도 수정해주고

blog/urls.py 도 새로 작성.

제네릭뷰가 엄청강력하게 쓰이는 걸 알 수 있음


템플릿 코딩은 조금 속도내서 빠르게 넘겼다.

 

템플릿 파일에서 URL을 추출하는 문법은 2가지가 있는데 

get_absolute_url() 메소드를 호출하거나

{% url %} 템플릿 태그를 사용하는 방법이다.

 

포스트 내용을 보여주는 post_detail.html 은 다음과 같다.

별도 HTML 태그 지정 없으면 장고는 body 영역이라고 간주한다.

 

» 는  HTML 특수문자 >> 를 의미한다.

포스트 내용을 보여주는 psot_detail.html 화면.

포스트 리스트를 날짜별로 구분해서 보여주는 화면

완성한 모습