본문 바로가기
Back-end/Django

[Django] Form

by 안녕주 2021. 7. 19.

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

댓글