본문 바로가기
프로그래밍/Django(장고)

[Django/장고]페이지 새로고침시 함수가 재실행되지 않는 이슈/Refresh didnt work -Solved

by Mr.noobiest 2024. 5. 22.

장고/Django/python

 

엥???   페이지 새로고침을 했는데 값이 그대로다...


Django에서는 return render(request,"/templates/보여줄화면.html", context)를 통해서 화면을 불러오는데....이때 context의 값을 그대로 html 화면에서 사용할 수 있다, php와 매우 유사하다. (<? php $argv[0] ?>)

예를 들어 context ={"now_time":datetime.datetime.now()} 라는 값을 입력하면

html 에서는 아래와 같이 바로 출력이 가능하다.

<span> 현재 시간 : {{now_time}} </span>

Jinja2엔진으로 서버값에서 전달한 값을 html에서 사용하기

그런데 문제가 발생했다. 같은 URL을 다시 접속하거나, 새로고침을 하게되면,

"최초로 해당 페이지를 로딩했을때의 값이 고정되어 나타나는 이슈가 발생했다"

즉, 설정된 view(함수)가 재실행되지 않은 것이다....

 


 

이유


Django에서는 같은 URL을 새로고치면 cache를 그대로 출력하는데, 이로인해 이미 접속한 페이지라면 전달받은 cache를 그대로 사용하게 된다.

 


 

 

해결법


cache를 사용하지 않고 페이지를 로딩할때마다 서버에서 새롭게 함수를 실행하고 싶다면 @never_cache를 사용하면 된다.

url이 다음과 같을때,view위에 @never_cache를 데코레이션을 올려주면 된다.

이렇게 하면 페이지를 새로고침하면 이전 캐시를 사용하지 않고 새로운 캐시를 가져온다.

728x90
반응형