emluy 개발 일기

Django 웹 10 - (blog) 홈페이지에서 데이터 입력 받고 admin에 바로 저장되게 하기 본문

웹 개발/Django

Django 웹 10 - (blog) 홈페이지에서 데이터 입력 받고 admin에 바로 저장되게 하기

yulme 2020. 5. 7. 21:39
SMALL

0. blogproject  프로젝트 폴더 만들기

1. blogapp 폴더 만들기

2. 쓴 글 간단히 보여주는 home.html 만들기 (setting 8 참고)

3. 쓴 글 자세히 보여주는 detail.html 만들기 (setting 8 참고)

 

 

 

1. bootstrap에서 nav bar 가져와서 html에 넣기 ( 기본설정 참고 ) 

: home.html , detail.html에 모두 넣음

서버 실행 화면

 

 

2. nav bar 의 메뉴 중 하나를 '글쓰기'로 수정하고 클릭시 new.html 열게 하기 (모든 html에 적용)

#home.html 과 detail.html

바꾸기 전
바꾼 후

 

 

 

 

 

 

3. 데이터를 입력 받을 html 새로 만듬

: new.html 만들기

- urls.py와 views.py에 기본 설정 해주기

- 똑같이 nav bar 추가 해주기

- 데이터 입력을 위한 form 태그 작성

 

#새로 만든 new.html

*이 때 작성한 form 태그의 data들을 create url로 보낼것이다

 

? : 아직 create.html 안만들었는데??

        => urls.py 의 create path로 간 후에 -> views.py의 create함수를 실행시킬 것인데 -> 함수에서 return render를 할것이 아니고 return redirect를 해주어 html을 실행시키는 것이 아니라 함수만 실행시킬 것이다. ( 무슨 말인지 다음 번호부터 )

 

? : create는 그럼 뭐를 위한 것인가?

       => 입력받은 data를 admin에 저장해주는 함수를 실행시키기 위한 것

 

 

 

 

 

 

 

 

 

4. urls.py에 create path 만들어주기

 

 

 

 

 

 

 

 

 

5. views.py에 create 함수 만들어주기

: 입력받은 데이터를 admin에 저장하기 위한 함수 만듬

코드 설명

- blog = Blog()    :     블로그 객체 만들기

- blog.title = request.GET['title']   :    new.html에서 입력받은 title(new.html에서 name="title") 데이터를 블로그 객체의 title에 넣음

- blog.body = request.GET['body'].    :    title 과 같음

- blog.pub_date = timezone.datetime.now()       :      new.html에 입력 시 시간을 블로그 객체의 pub_date에 넣음

- blog.save()   :     완성한 블로그 객체를  admin에 저장

- return redirect('/blog/'+str(blog.id))     :    admin에 데이터 저장 후에 어떤 홈페이지 뜨게 할건지 url로 알려줌 -> 여기서는 /blog/blog.id 즉 자세히 보는 페이지인 detail.html 이 뜨게함 

 

? : 왜 str(blog.id)로 타입변환 해주나?

    => blog.id는 int 인데 url은 str 이므로 형변환 필요함 

 

? : render함수와 redirect함수의 차이점은?? 

   => 둘이 완전히 다른 함수는 아님 겹치는 부분도 있고 조금씩 다를 뿐

   => 둘이 비슷한 함수인데 redirect는 url을 입력, render는 파일명을 입력

 

 

 

 

 

 

 

실행화면

 

#home.html

#new.html

 

#detail.html

반응형
Comments