반응형
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으로 받은 title과 content를 화면에 출력
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 |