URL → 뷰 → 템플릿 순으로 요청에 따른 응답 정의
- article/integer/update/ → pk가 정수와 일치하는 게시물의 편집 페이지를 표시합니다.
- Article 클래스의 인스턴스 중 article_pk와 pk가 일치하는 하나의 인스턴스를 검색하여 article 변수에 저장합니다.
: 특정 pk의 호출 포스트는 GET이든 POST든 동일하므로 구분 없이 실행 - 요청 방식에 따라 다르게 처리합니다.
- GET의 경우 ArticleForm 클래스에서 기사 양식을 가져와 그 내용이 표시됩니다.
- POST의 경우 수정된 내용을 불러와 내용을 검증한 후 DB에 저장한다.
내용을 DB에 저장하면 상세 페이지가 다시 표시됩니다.
ArticleForm의 첫 번째 인수는 request.POST입니다.
- GET의 경우 ArticleForm 클래스에서 기사 양식을 가져와 그 내용이 표시됩니다.
-
- 양식은 GET 요청이 수신되거나 2) POST 요청이 유효성 검사를 통과하지 못할 때 표시됩니다.
- GET의 경우 로드된 폼이 표시됩니다.
- POST의 경우 현재까지 수정된 내용을 보여줍니다.
- 양식은 GET 요청이 수신되거나 2) POST 요청이 유효성 검사를 통과하지 못할 때 표시됩니다.
- update.html을 만들고 base.html을 상속합니다.
- create.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 속성 검색 및 사용오전.
- article_pk가 아닌 article.pk인 이유 : views.py의 상세 기능에서 detail.html로부터 요청 및 데이터를 수신합니다.