(Web/Django) 10. 글 편집 페이지 만들기

URL → 뷰 → 템플릿 순으로 요청에 따른 응답 정의


기사 > urls.py

  • article/integer/update/ → pk가 정수와 일치하는 게시물의 편집 페이지를 표시합니다.


기사 > views.py

  • Article 클래스의 인스턴스 중 article_pk와 pk가 일치하는 하나의 인스턴스를 검색하여 article 변수에 저장합니다.

    : 특정 pk의 호출 포스트는 GET이든 POST든 동일하므로 구분 없이 실행
  • 요청 방식에 따라 다르게 처리합니다.

    • GET의 경우 ArticleForm 클래스에서 기사 양식을 가져와 그 내용이 표시됩니다.

    • POST의 경우 수정된 내용을 불러와 내용을 검증한 후 DB에 저장한다.

      내용을 DB에 저장하면 상세 페이지가 다시 표시됩니다.

      ArticleForm의 첫 번째 인수는 request.POST입니다.

    1. 양식은 GET 요청이 수신되거나 2) POST 요청이 유효성 검사를 통과하지 못할 때 표시됩니다.

    • GET의 경우 로드된 폼이 표시됩니다.

    • POST의 경우 현재까지 수정된 내용을 보여줍니다.


기사 > 템플릿 > 기사 > update.html

  • update.html을 만들고 base.html을 상속합니다.

  • create.html과 같은 구조로 작성합니다.


서버 실행 결과

수정 성공

추가 작업 : 사용자 편의를 위한 기능 추가

  1. 게시물 상세 페이지에 편집 링크 추가


기사 > 템플릿 > 기사 > detail.html

  • url 태그를 사용하여 업데이트 경로에 연결하십시오.
  • 업데이트 경로는 변수 라우팅을 사용하므로 특정 기사 인스턴스의 pk가 필요합니다.

    따라서 article.pk를 함께 넣으십시오.
    • article_pk가 아닌 article.pk인 이유 : views.py의 상세 기능에서 detail.html로부터 요청 및 데이터를 수신합니다.

      detail 함수는 pk가 article_pk와 일치하는 Aritcle의 인스턴스 하나를 컨텍스트에 넣고 detail.html로 보냅니다.

      따라서 detail.html이 가지고 있는 정보는 article_pk 변수가 아닌 기사 인스턴스에 대한 정보모두. 다시 말해서, article.pk를 사용하여 기사 인스턴스의 pk 속성 검색 및 사용오전.


기사 > views.py


서버 실행 결과