Django

django form 이용하기

주씨. 2022. 6. 7. 15:51
728x90

app에 forms.py 생성

from django import forms

class BlogForm(forms.Form):
    # 내가 입력받고자 하는 값들
    title = forms.CharField()
    body = forms.CharField(widget=forms.Textarea)

 

views에 함수 작성 (GET)

# django form을 이용해서 입력값을 받는 함수
# GET 요청과 (= 입력값을 받을 수 있는 html을 갖다 줘야함)
# POST 요청 (= 입력한 내용을 데이터베이스에 저장. form에서 입력한 내용을 처리)
# 둘 다 처리가 가능한 함수
def formcreate(request):
    if request.method == 'GET':
        form = BlogForm()
    return render(request, 'form_create.html', {'form': form})

 

html 작성 (form_create.html)

<h1>django form을 이용한 새 글 작성 페이지</h1>
<form action="" method='POST'>
  {% csrf_token %}
  <table>
    {{ form.as_table }}
  </table>
  <input type="submit" value='새 글 작성하기'>
</form>

 

views에 함수 작성 (POST)

def formcreate(request):
    if request.method == 'GET':
        form = BlogForm()
    elif request.method == 'POST':
        form = BlogForm(request.POST)
        if form.is_valid(): # 폼 데이터를 자동으로 유효성 검사를 해줌
            post = Blog()
            post.title = form.cleaned_data['title']
            post.body = form.cleaned_data['body']
            post.save()
            return redirect('home')
    return render(request, 'form_create.html', {'form': form})