이번에는 대망의 CRUD의 C ( Create ) 를 시작할 것이다
그러므로 Board 객체가 필요하기 때문에 models.py를 건드려보자
위의 코드는 이전에 적은적이 있었다
아래의 링크에서 설명하므로 가볍게 설명을 생략하겠다
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 |