[글쓴이 표시]
앞서 Question 모델과 Answer 모델에 author 속성을 추가했다.
게시판의 게시물에는 '글쓴이'를 표시하는 것이 일반적이다.
질문 목록, 질문 상세 화면에 author 속성을 이용하여 글쓴이를 표시해보자.
[질문목록]
question_list.html
에서 css 수정 , 글쓴이 생성
[수정과 삭제]
작성한 질문과 답변을 수정하고 삭제할 수 있는 기능을 추가
수정 일시
먼저 질문이나 답변이 언제 수정되었는지 확인할 수 있도록
Question과 Answer 모델에 수정 일시를 의미하는 modify_date 속성 추가
modify_date = models.DateTimeField(null=True, blank=True)
null = True는 데이터베이스에서 modify_date 칼럼에 null을 허용한다는 의미, blank=True는 form.is_valid()를 통한 입력 데이터 검증 시 값이 없어도 된다는 의미이다.
모델이 변경 되었으므로 makemigrations ,migrate 명령을 수행
[질문 수정]
작성한 질문을 수정하려면 질문 상세 화면에서 '수정'버튼을 클릭하여 수정 화면으로 진입해야 한다.
question_modify 함수는 로그인한 사용자(request.user)와 수정하려는 질문의 글쓴이(question.author)가 다를 경우에는 '수정 권한이 없습니다' 라는 오류를 발생
이 오류를 발생시키기 위해 messages 모듈을 이용하였다.
messages는 장고가 제공하는 모듈로 넌필드 오류(non-field error)를 발생시킬 경우에 사용한다
넌필드 오류는 필드의 값과는 상관없이 다른 이유로 발생하는 오류이다. form_errors.html 템플릿은 필드 오류와 넌필드 오류 모두를 표시하기 위해 삽입되는 템플릿이다.
[질문 삭제 버튼]
이번에는 작성한 글을 삭제할 수 있는 버튼을 다음처럼 추가해보자
<삭제> 버튼은 <수정> 버튼과 달리 href 속성 값을 javascript:void(0)로 설정했다.
href 속성값을 javascript:void(0) 로 설정하면 해당 링크를
클릭해도 아무런 동작도 하지 않는다.