[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

django 기초 - form 태그로 POST하기

inu 2020. 8. 21. 15:18
반응형

home.html

<h1>학생 이름을 입력해보세요!</h1>
<form action="{% url 'result'%}" method="POST">
    {% csrf_token %}
    <input name="username" placeholder="이름"/>
    <br/>
    <br/>
    <button type="submit">체크하기</button>
</form>
  • form 태그의 POST로 form 태그 안의 데이터를 request 내부에 담아 보낼 수 있다.
  • {% csrf_token %}은 해당 POST 요청에 대해서만은 csrf token을 발급하고 체크하도록 해준다. (https://chagokx2.tistory.com/49)
  • action의 'result' url에 request을 보낸다.
  • button의 submit이 해당 기능이 해당 기능을 수행하겠다고 요청하는 버튼이 된다.
  • 물론 result라는 url로 보내는만큼 해당하는 url이 존재해야 한다.

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name = 'home'),
    path('result/', views.result, name = 'result')
]
  • urlpatterns에 해당 url을 추가해준다.

views.py

def result(request):
    name = request.POST['username']
    students = ['inu', 'james', 'bob']

    if name in students:
        is_exist = True
    else:
        is_exist = False

    return render(request, 'result.html', {'user_name': name, 'is_exist':is_exist})
  • request.POST 에 존재하는 'username' name에 존재하는 값을 가져온다.
  • 확인을 위해 students 리스트를 선언한다. (물론 models.py를 사용하는 것이 정석이지만 현재는 배우지 않았으므로 임의의 리스트를 따로 생성해서 확인해보겠다.)
  • students에 받아온 name이 존재하는지 확인해서 해당 불린값을 is_exist에 저장한다.
  • name과 is_exist를 render로 보낸다.
  • result.html 을 활용해야 하니 이 역시 생성해준다.

result.html

<body>
    <h1>결과</h1>
    {% if is_exist %}
        {{user_name}}은 있어요!
    {% else %}
        {{user_name}}은 없어요!
    {% endif %}
</body>
  • django 문법을 활용해 위와 같이 조건문이나 반복문을 html 문서 내부에서 활용할 수 있다.
  • 단, endif(endfor, endwhile 등)을 꼭 작성해줘야 한다.

결과

 

 

반응형