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 == 특정변수 %}

로 비교해서 하면 맞게 동작하는 것을 확인할 수 있다.