반응형
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 등)을 꼭 작성해줘야 한다.
결과
반응형
'🛠 기타 > WEB' 카테고리의 다른 글
django 기초 - admin (0) | 2020.08.21 |
---|---|
django 기초 - MTV 패턴 (0) | 2020.08.21 |
django 기초 - views.py 에서 html 파일로 데이터 넘기기 (0) | 2020.08.21 |
django 기초 - 원리의 기초적용 (render) (0) | 2020.08.21 |
django 기초 - 원리의 기초적용 (HttpResponse) (0) | 2020.08.21 |