new : new.html 보여줌
create : 데이터베이스에 저장
def new(request):
return render(request, 'new.html')
Python
복사
urls.py 에 다음 코드 작성
path('new/', new, name='new'),
Python
복사
GET vs POST
GET : 데이터를 얻기 위한 요청 / 데이터가 url 에 보임
POST : 데이터를 생성하기 위한 요청 / 데이터 url 안 보임 / Csrf(사이트 간 요청 위조) 공격 방지
new.html 에 다음 코드 작성
<h1>Write Your Blog</h1>
<form action="" method="post">
{%csrf_token%}
<p>제목: <input type="text" name="title"></p>
<p>작성자: <input type="text" name="writer"></p>
본문: <textarea name="body" id="" cols="30" rows="10"></textarea>
<button type="submit"> submit</button>
</form>
HTML
복사
views.py 에 다음 코드 추가
from django.utils import timezone
def create(request):
new_blog = Blog()
new_blog.title = request.POST['title']
new_blog.writer = request.POST['writer']
new_blog.body = request.POST['body']
new_blog.pub_date = timezone.now()
new_blog.save()
return redirect('detail', new_blog.id)
Python
복사
render 가 아닌 redirect 로 되돌아감 → 위에 redirect 자동 추가 (안되면 추가)
path('create/', create, name="create"),
Python
복사
urls.py 에 위 코드 작성
new.html 의 form action 에 {%url 'create'%} 추가