Django
Django template tag if 문에서 변수끼리 비교
wangkisa
2019. 7. 11. 11:33
장고 template 에서 변수끼리 값이 맞는지 비교해야 되는 경우가 있다.
예를 들어
<select>
<option>
{% if request.GET.변수명 == user_id %}
</option>
</select>
처럼 옵션 안에서 두 변수끼리 비교를 하는 경우
일반적으로 request.GET.변수명 과 비교할때는 " " 처럼 문자열인 경우에 맞는지 체크가 되는것을 알 수 있다.
그런데, {% if request.GET.변수명 == "1" %} 이런식으로 지정되는 경우는 문제가 없지만
{% if request.GET.변수명 == user_id %} 처럼 변수명 으로 비교를 하게 될때
user_id 가 int 형인 경우는 같은 값인데도 불구하고 request.GET.변수명은 string형, user_id 가 int 형으로 판정되어
체크를 하지 못하게 된다.
그래서 일단 해결한 방법으로는
def get_context_data(self, *args, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['user_id'] = int(user_id)
return ctx
get_context_data() 에서 user_id를 int 형, 혹은 맞는 자료형으로 바꿔서
{% if user_id == 특정변수 %}
로 비교해서 하면 맞게 동작하는 것을 확인할 수 있다.