Django/inflearn

폼으로 데이터 전송하기

곽수진 2022. 10. 21. 02:19
반응형

from django.shortcuts import render
from django.http import HttpResponseRedirect

from second.models import Post
from .forms import PostForm


# Create your views here.
def list(request):
    context = {
        'items': Post.objects.all()
    }
    return render(request, 'second/list.html', context)

def create(request):
    form = PostForm()
    return render(request, 'second/create.html', {'form':form})

def confirm(request):
    form = PostForm(request.POST)
    if form.is_valid():
        return render(request, 'second/confirm.html', {'form':form})
    return HttpResponseRedirect('/second/create/')

form = PostForm(request.POST) : request의 POST 데이터들을 바로 PostForm에 담음

if form.is_valid() : 데이터가 form 클래스에서 정의한 조건에 만족하는지 확인함

return HttpResponseRedirect('/second/create/') : 데이터가 유효하지 않을 경우 /second/create/로 돌아감

 

 

<body>
  <h4>{{ form.title.value }}</h4>
  <p>{{ form.content.value }}</p>
</body>

▶ form으로 받은 titlecontent를 화면에 출력

 

 

from django.urls import path
from . import views

urlpatterns = [
    path('list/', views.list, name="list"),
    path('create/', views.create, name="create"),
    path('confirm/', views.confirm, name="confirm"),
]

second/confirm으로 접속시 confirm.html 파일이 출력되도록 url 연결

 

 

<form action="{% url 'confirm' %}" method="post">
  {% csrf_token %}
  {{ form }}
  <button type="submit">제출</button>
</form>

▶ form action의 경로를 기존의 /(루트 경로)에서 confirm url로 변경

    → /create/에서 데이터를 입력하면 /confirm/ 페이지로 이동해서 데이터가 전달된 것을 확인할 수 있음

    → method를 GET으로 바꾸면 views.py의 요청 데이터를 form 클래스 생성자에 전달하는 부분에 request.GET으로 바꿔주면 됨

 

 

▶ /create/에 정보를 입력한 모습

 

 

▶ 제출 버튼을 클릭 후 결과가 출력되는 모습

반응형

'Django > inflearn' 카테고리의 다른 글

Model Form으로 데이터 저장하기  (0) 2022.10.31
Model Form 사용하기  (0) 2022.10.30
기본 폼 생성하기  (0) 2022.10.20
폼 개요  (0) 2022.10.19
화면에 데이터 출력하기  (0) 2022.10.04