728x90

참고:

[Web Applicateion]서버 사이드와 클라이언트 사이드,백앤드와 프론트앤드


pip install django로 반드시 장고를 설치하여야한다.

또한 장고의 버전은 2이므로 1을 사용하는 사람들의 경우 서로 많이 차이날 수 있다는 점을 잘 알고 접근하여야 한다.


전 장에서는 form데이터를 만들었었다.

이번에는 form을 이용해서 데이터를 전달받는것을 해보자.

또한 form으로 받은 데이터로 db에 저장할 것이다.


def form_test(request):
if request.method == 'POST':
form = PersonForm(request.POST)
if form.is_valid():
obj = Person(name=form.data['name'], birth=form.data['birth'], age=form.data['age'])
obj.save()
return HttpResponse('success')
return HttpResponse('fail')
elif request.method == 'GET':
form = PersonForm()
return render(request, 'dj/form.html', {'form': form})
else:
pass

views.py의 form_test를 수정하도록하자.

여기서 우리는 데이터를 받을 때는 POST로 접속하게 됬었다.

그러니 다른것은 크게 건드릴 필요가 없이 requset.method가 POST인 경우만 손을 보도록 하자.

이제 한줄씩 해석을 들어가도록하자.


form = PersonForm(request.POST)

form으로 넘겨받은 데이터를 받는다.

request.POST를 집어넣어서 해당 form으로 넘어온 모든 데이터를 html코드상태로 가지고 있다.

if form.is_valid():

해당 폼의 데이터가 올바른지 1차적으로 확인한다.

데이터가 올바르지 않다면(DB에 넣을수 없는 형태라면) 거른다.

따라서 이 경우를 해주는것이 좋다.

obj = Person(name=form.data['name'], birth=form.data['birth'], age=form.data['age'])

form의 각각 파라메터들은 data로 접근할 수 있다. 반대로 form['name'].value()같은 형태로도 접근가능.

그러나 코드가 더 짧은 쪽으로하도록하자.

obj.save()

DB에 저장하도록 하자.


성공했을경우 success가, 실패했을 경우 fail이 뜨도록 코드를 썼다.

이제 한번 success가 뜰지, fail이 뜰지 테스트를 해보도록 하자.


해당 페이지의 폼을 열어서 값을 입력한후 submit을 눌려보자.


일단 실패가 뜨게 될 것이다.

그 이유는 간단한데 생일을 잘못적어서 그렇다.

birth는 구분을 하이픈으로 끊어줘야되서 그렇다.

다시 실행하도록 해보자.


제대로 구분자를 넣고 실행하여 보자.


이번에는 success라고 뜬다.

과연 제대로 성공헀을까? 이도 확인해 보도록 하자.


우리가 만드 person_test에 들어가보면 제대로 기록된걸 확인할 수있다.

물론 또 들어가서 확인해 보자.


데이터가 제대로 저장되어 있음을 확인할 수 있다.



'Programming > Python-Django' 카테고리의 다른 글

[Django-10]login, logout  (0) 2018.02.11
[Django-09]class based view  (0) 2018.02.11
[Django-07]form만들기  (0) 2018.02.03
[Django-06]model을 templates로 출력하기  (0) 2018.02.03
[Django-05]db와 model 사용하기  (0) 2018.02.03

+ Recent posts