이번에는 대망의 CRUD의 C ( Create ) 를 시작할 것이다
그러므로 Board 객체가 필요하기 때문에 models.py를 건드려보자

위의 코드는 이전에 적은적이 있었다
아래의 링크에서 설명하므로 가볍게 설명을 생략하겠다
2강) Django Object 만들기!
이번에는 Django의 Object를 만들 것 사람이 있다면 ( People ) 사람의 정보들이 있다 이름, 나이, 성별 등 ( name, age, gender ) 그런 정보들을 담을 수 있는 클래스를 만들어 보자 Django에서 제공해주는 mode.
initstory.tistory.com
main 페이지에서 글을 등록하기 버튼을 만들고 글을 등록하는 페이지로 이동하기 위해
아래의 코드를 추가하였다

이후에는 write ( 등록 ) 페이지가 없으니 하나 만들어 주도록 하자
login.html에 있는거 그대로 복붙한다음 바꿀거 바꾸면 된다 url같은거나 등등

그다음 해줄 일은 form을 만드는 것이 되겠다
또 {{ form }} 사용하게 되었으니 ( 솔직히 어느게 더 편한지 모르겠지만 )

model = Board :: 이번에는 Member가 아닌 Board를 등록하기 때문에 Board 오브젝트를 이용한다
fileds = [] :: 등록할때 제목, 내용, 마지막으로 누가적었는지 확인하기 위하여 member로 설정한다
widgets에서 forms.HiddenInput() 이라는 것은 아마 보이지 않는 손이다
아래의 느낌으로 생각하면 되겠다
<input type="hidden"/>
그리고 우리는 늘 그렇듯이 urls.py에 path를 추가해 준다

path를 지정해줬으니 write 함수를 만들어 보겠다
write함수는 페이지 이동 ( GET ) 과 등록 ( POST )를 만들어주면 될 것같다

if request.method == 'POST'
・요청방식이 POST일 경우 ( 등록버튼을 눌렀을때 )
form = BoardWriteForm(request.POST)
・글을 등록하였을때 input 애들이 form이라는 변수에 들어간다.
if form.is_valid():
・그 form을 유효성검사를 하고
form.save()
・괜찮을 경우 DB에 저장을 한다
return redirect('main')
・저장한 뒤 url main으로 요청을 한다
member_id = request.session['memberid']
・세션으로 저장되어 있던 memberid를 취득한다
member = get_object_or_404(Member, pk=member_id)
・세션ID로 Member데이터가 있는지 확인한다 만약 member 데이터가 없을 경우 404에러를 띄어준다
( 이게 인싸들이 많이 쓴다더라 )
form = BoardWriteForm(initial={'member': member})
・form을 만들어줄때 member객체를 넣어준다 ( 이렇게 하면 누가등록하는지 알 수 있을 것이다 )
return render(request, 'write.html', {'form': form, 'member': member})
・wirte.html 를 보여주고, 생성할 form과, member 정보를 제공한다
자 이제 무자비한 설명을 마치고, 실전으로 들어가보도록 하자
아래의 화면에서 글 등록하기를 클릭한다 ( GET )

GET 방식이기 때문에 아래의 화면이 들어오는게 정상이다

그리고 아까 아래의 코드가 있는데 이부분은 뭐 어디다 표현이 될까?
분명 이것은 member의 ID를 form에 넣는다는 뜻인거 같다
member_id = request.session['memberid']
member = get_object_or_404(Member, pk=member_id)
form = BoardWriteForm(initial={'member': member})
Web 개발자의 필살기 F12를 눌러본다
그러면 hidden으로 숨어있는게 보일것이다 그리고 value는 1로 되어 있기때문에 member가 누구인지 알 수 있다

이제 등록을 한번 해보겠다 한방에 됬으면 얼마나 좋을까

등록버튼을 눌렀더니 main 페이지로 들어왔다

나름 성공적으로 끝난거 같다 하지만 검증방법이 없다
그래서 다음시간에는 게시판글을 등록한거를 보여주도록하는
CRUD 중 R를 하기위한 작업을 해보도록 하겠다
'Web Programming > Django' 카테고리의 다른 글
| 9강) Django 게시판 상세조회하기 ( Read ) (0) | 2021.01.16 |
|---|---|
| 8강) Django 게시판 조회하기 ( Read ) (0) | 2021.01.16 |
| 6강) Django 로그인 해보기 (0) | 2021.01.15 |
| 5강) Django 회원가입하기, 또는 회원등록하기 (4) | 2021.01.15 |
| 4강) Django 회원가입 페이지 만들기 (0) | 2021.01.15 |