오늘은 너무 오래걸리므로.. velog를 최대한 활용하는 방향으로 써봅니다.
<!DOCTYPE html>
<html> <head> <meta charset="utf-8"> <title>실습1</title> </head> <body> <form action="/q1/q1Result/" method="post">ID : <input type="text" name="id"><br> PassWord : <input type="password" name="pass"><br> 자기소개<br> <textarea name="info" wdith="150px" heigth="100px"></textarea><br> <input type="submit" value="제출"> <input type="reset" value="초기화"> {% csrf_token %} </form> </body> </html> |
---|
위와 같이 post 형식으로 보내진 form-data는 views로 가게된다.
def q1Result(request): user_id = request.POST['id'] user_pass = request.POST['pass'] user_info = request.POST['info'] txt = f''' 입력하신 정보는 아래와 같습니다.
ID :{user_id}
Pass :{user_pass}
자기소개 :{user_info}
''' return HttpResponse(txt)
views에서는 request 요청된 자료에서 POST 형식으로 들어온 data를 정리 및 처리 할 수 있다.
HttpResponse() :
from django.http import HttpResponse
로 httpResponse 객체 반환
request.POST :
POST 형식으로 request 된 data를 반환합니다.
<!DOCTYPE html>
<html> <head> <meta charset="utf-8"> <title>실습2</title> </head> <body> <form action="/q1/q2Result/" method="post"> 학력 <select name="학력"> <option>박사</option> <option>석사</option> <option>학사</option> </select><br> 국가 <select name="국가" size="3"> <option>대한민국</option> <option>미국</option> <option>일본</option> <option>중국</option> </select><br> 관심분야 <select name="관심분야" size=5 multiple> <option>java</option> <option>python</option> <option>c/c++</option> <option>web</option> <option>datebase</option> </select><br> <input type="submit" value="제출"> <input type="reset" value="초기화"> {% csrf_token %} </form> </body> </html> |
---|
Attribute | Value | Description |
---|---|---|
autofocus | autofocus | 페이지가 로드될 때 드롭다운 목록에 포커스를 자동으로 가져오도록 지정합니다. |
disabled | disabled | 드롭다운 목록을 사용하지 않도록 지정합니다. |
form | form_id | 드롭다운 목록이 속하는 양식을 정의합니다. |
multiple | multiple | 여러 옵션을 동시에 선택할 수 있도록 지정합니다. |
name | name | 드롭다운 목록의 이름을 정의합니다. |
required | required | 사용자가 양식을 제출하기 전에 값을 선택해야 함을 지정합니다. |
size | number | 드롭다운 목록에서 표시되는 옵션 수를 정의합니다. |
<!DOCTYPE html>
<html> <head> <meta charset="utf-8"> <title>실습3</title> </head> <body> <form action="/q1/q3Result/" method="post"> <select name="site"> <option value="https://www.naver.com/">네이버</option> <option value="https://www.daum.net/">다음</option> </select><br> <input type="submit" value="확인"> {% csrf_token %} </form> </body> </html> |
---|
<option>의 value값에 주소를 넣어줌으로써 해당 사이트를 redirect 할 수 있다.
def q3Result(request): user_select1 = request.POST['site'] return HttpResponseRedirect(user_select1)
views에서 HttpResponseRedirect( ) 를 사용하여 해당 주소의 사이트로 접근할 수 있다.
HttpResponseRedirect 를 사용하기위해서는
from django.http import HttpResponseRedirect
를 선언해줘야한다.
<!DOCTYPE html>
<html> <head> <meta charset="utf-8"> <title>실습4</title> </head> <body> <form action="/q1/q4Result/" method="post"> 1부터 더할 숫자 입력 <input type="text" name="num"> <input type="submit" value="확인"> {% csrf_token %} </form> </body> </html> |
---|
숫자 num을 입력받은 form-data를 views로 요청하게됩니다.
이를 views는
def q4Result(request): num = int(request.POST['num']) su = 0 for i in range(num): su += i print(su) context={ 'su': su } return render(request,'quiz1/q4Result.html',context)
num 변수에 새로 저장 후 for문을 사용하여 계산합니다.
계산된 data는 context(딕션)으로 저장하여 templates에 보냅니다.
결국 html로 다써버린 .