1. Model 생성
writer = models.ForeignKey('user.User', verbose_name='작성자', on_delete=models.CASCADE)
# user app에 존재하는 model에서 User 테이블과 외래키 관계를 지정 (일반 속성과 주키를 연결하는 것이므로 속성 지정 X)
# on_delete cascade 옵션 지정 (SET_NULL / SET_DEFAULT)
2. View 생성
boards = Board.objects.all().order_by('-id') # all() 전체 데이터 가져오기
# order_by('속성') 해당 속성 기준으로 정렬 -는 역순
3. Template 생성
4. URL 파싱
5. 결과화면
1. Forms 생성
2. View 생성
user_id = request.session.get('user') # 현재 로그인한 사용자의 id 값 추출
user = User.objects.get(pk=user_id) # User 테이블에서 해당 id 값 행 추출
board = Board() # board 생성 (행)
board.title = form.cleaned_data['title'] # 입력한 값의 title을 행의 titlte에 삽입
board.contents = form.cleaned_data['contents'] # 입력한 값의 contents를 행의 contents에 삽입
board.writer = user # id 값을 갖는 행 전체를 넘김 (외래키 속성이므로 주키 속성만 추출함)
board.save()
3. Template 생성
{% ifequal field.name 'contents' %} # contents 요소를 textarea로 지정하기 위한 제어문
<textarea style="height: 170px;" ... # 이런식으로 해당 태그에 직접 style 적용 가능
onclick="location.href='/board/list/'" # 해당 버튼 클릭 시 지정한 URL로 이동
4. URL 파싱
5. 게시글 쓰기 화면
1. View 생성
2. Template 생성
onclick="location.href='/board/list/'" # 해당 버튼 클릭 시 지정한 URL로 이동
3. URL 파싱
4. 게시글 목록에서 게시글 클릭하면 상세보기 기능
<th><a href="/board/detail/{{board.id}}/" class="text-dark">{{board.id}}</a></th>
5. 게시글 상세보기 화면
1. css style 적용해도 적용되지 않는 error
<span style="color: red; list-style-type: none;">{{field.errors}}</span>
2. Import could not be resolved warning