forms.py를 쓰는 이유는
- 데이터베이스의 모델이 변할 때 마다 하나하나 수정하지 않고 유효성 검사를 통해 쉽게 할 수 있다.
- 장고에서 어떤 입력공간을 주겠다! 생각하고 시작하자.
1. blog앱 안에 forms.py를 생성하자
from django import forms
from .models import Blog
class BlogForm(forms.ModelForm):
class Meta:
model = Blog
fields = ['title', 'writer','body','image'] #pub_date뺴고
2. views.py 에 해당 코드들 추가 & 수정
# 상단에 추가
from .forms import BlogForm
#new 함수 수정
def new(request):
form = BlogForm()
return render(request, 'new.html', {'form':form})
3. new.html 수정하기
{% extends 'base.html' %}
{% block content %}
<h1>Write Your Blog</h1>
<form action="{%url 'create' %}" method="post" enctype="multipart/form-data">
{%csrf_token%}
{{form.as_p}}
<!--여기 있던 모든 코드들 삭제하고 {{form.as_p}}추가-->
<button type="submit">Submit</button>
</form>
{% endblock %}
4. views.py 수정
def create(request):
form = BlogForm(request.POST,request.FILES)
if form.is_valid(): #유효성 검사
new_blog = form.sace(commit=False) #pub_date 추가가 안되었기에... 임시 저장
new_blog.pub_date = timezone.now()
new_blog.save()
return redirect('detail', new_blog.id)
return redirect('home') #실패 했을 경우 home으로
'Back-end > Django' 카테고리의 다른 글
[Django] User확장과 인증(실습1) (0) | 2021.07.20 |
---|---|
[Django] User 확장과 인증(이론) (0) | 2021.07.20 |
[Django] Media (0) | 2021.07.19 |
[Django] Static (0) | 2021.07.19 |
[Django] Template 상속 (0) | 2021.07.19 |
댓글