Django Blog Project

SSO·2022년 2월 7일
0

LikeLion9th

목록 보기
7/7
post-thumbnail

앞에서 배웠던 내용들을 가지고 아주 간단한! 블로그를 만들어 보았다!

home 함수 : request만 들어오면 실행되는 함수, 즉 home.html을 가져다 달라는 request만 있으면 실행한다.

request 이외의 더 이상의 정보는 필요 없다. 그래서 인자는 request하나 뿐이다.

  • detail.html
    모든 글에 대해 more를 누르면 detail.html로 연결되도록 링크를 설정할 것이다.
    하지만 여기서 중요한 건 detail.html은 하나라는 점이다.
  • x번째 블로그 객체를 요청하면 x번 객체 내용을 띄운다. => 객체 구분 필요 = pk : 데이터 구분자
    pk = primary key : 객체들의 이름표, 구분자, 데이터의 대표값
    어떤 값을 데이터의 대표값으로 삼을지는 정하기 나름
  • url 설계 = 우리사이트/blog/객체번호(x) => path Converter : URL을 계층적으로 디자인
    유저에게 보여지는 화면은 몇 번 객체(몇 번째 블로그)를 인자로 전달받았는지에 따라 그때 그때 다르다.
    따라서 blog_detail 변수 안에는 모든 객체(Blog.objects)가 아니라 '특정 번호의 객체'를 담을 수 있는 방법이 필요하다.
    -> path('blog.int:blog_id', blog.views.detail, name="detail")
    int:blog_id 이게 path Converter , blog_id 는 함수에게 넘기는 인자로 몇 번 객체인지를 넘겨준다.
    path('url이름', 함수이름, 경로 이름)
    ```
               Path Converter : <type : 변수이름>
      -> 여러 객체들을 다루는 계층적인 URL을 생성하는 데에 유리
    
    ```
  • 있지도 않은 객체를 요청하면 404에러 띄우기 (예외처리)
    => get_object_or_404 (어떤 클래스, 검색조건(몇 번 데이터, pk))

detail함수 : request 이외에 추가적인 정보가 필요하다. request만으로는 정보가 부족하고 몇 번 객체를 다룰 것인지에 대한 정보가 추가적으로 필요하다.
그래서 인자는 request, blog_id 이렇게 두 개가 필요하다!

new.html

새로운 글을 작성할 수 있는 공간
제출버튼을 누르면 바로 작성한 글의 detail.html로 이동하도록 구현 -> Views.py 에서 구현!
new의 form태그에 입력한 내용이 그대로 데이터베이스에 저장되야 한다.

views.py

  • request가 들어오면 new.html을 띄어주는 함수
  • new.html에서 입력한 내용을DB에 등록하는 함수
    이렇게 두 가지의 함수가 필요하다!

redirect(url) : 위의 내용을 모두 처리하고 url로 이동해라 ㅏㅏ라는 의미, url칸에 다른 url(프로젝트 외의 url)을 입력할 수 있음
render() : 프로젝트 내의 html로 이동하는 경우 주로 사용
render()와 redirect()의 차이 : 인자에 따라 어떤 상황에 쓰고싶은 지에 따라서 골라쓰자!

https://github.com/qkrthdus605/LikeLion_Django

profile
Github_qkrthdus605

0개의 댓글