21.08.26_Django(예제풀이)

Won Jea Yang·2021년 8월 26일
0

Daily_Study

목록 보기
2/2

시작하기 전에

오늘은 너무 오래걸리므로.. velog를 최대한 활용하는 방향으로 써봅니다.

Djang 예제 4문.

예제 1.
<!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>
  • <form> :
    action : 제출 시 form-data를 /q1/q1Reult/로 보냅니다.
    method : form-data를 보내는 방법을 지정

위와 같이 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를 반환합니다.


예제 2.
<!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>
  • <select> : <option> 을 사용해 드롭다운 목록을 만든다.
Attribute Value Description
autofocus autofocus 페이지가 로드될 때 드롭다운 목록에 포커스를 자동으로 가져오도록 지정합니다.
disabled disabled 드롭다운 목록을 사용하지 않도록 지정합니다.
form form_id 드롭다운 목록이 속하는 양식을 정의합니다.
multiple multiple 여러 옵션을 동시에 선택할 수 있도록 지정합니다.
name name 드롭다운 목록의 이름을 정의합니다.
required required 사용자가 양식을 제출하기 전에 값을 선택해야 함을 지정합니다.
size number 드롭다운 목록에서 표시되는 옵션 수를 정의합니다.
참조사이트

예제3.
<!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

를 선언해줘야한다.


예제4-1.
<!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에 보냅니다.

comment
결국 html로 다써버린 .
profile
개발자 시작합니다. @>@

0개의 댓글

Powered by GraphCDN, the GraphQL CDN