728x90
반응형
자바에서 쿠키를 사용해봤듯이 파이썬 장고에서도 쿠키를 사용할 수 있다.
오늘은 일단 이걸 연습해보겠다.
가장 중요한 파일은 views이다. 세션에다 쿠키를 저장하기 때문에 작동원리를 이해하고 사용을 할 수 있어야 한다.
<div class="row">
{% for row in rd%}
<div class="col-md-4">
<div class="thumbnail">
<a href="/recipe/recipe_before/?no={{row.no}}">
<img src="{{row.poster}}" alt="Lights" style="width:100%">
<div class="caption">
<p>Lorem ipsum...</p>
</div>
</a>
</div>
</div>
{% endfor %}
</div>
디테일을 넘어가기 전에 detail_before를 걸어준다. 디테일 화면을 보여주기전에 먼저 정보를 저장하고 들어가야해서
이렇게 써줘야 한다.
def recipe_before(request):
# 쿠키 저장
no=request.GET['no']
response=redirect('/recipe/recipe_detail/?no='+str(no))
response.set_cookie(f"k{no}",no,60*60*24)
return response
우선 url주소에서 받아온 no값을 받아오고, response에 redirect를 저장한다.
또 response에 쿠키정보를 셋팅해준다.
그리고 response를 리턴한다
dao에서 쿠키에 사용할 데이터를 가져와준다.
def recipe_info(no):
conn=getConnection()
cursor=conn.cursor()
sql=f"""
SELECT no,title,poster
FROM recipe
WHERE no={no}
"""
cursor.execute(sql)
data=cursor.fetchone()
cursor.close()
conn.close()
return data
no,title,poster정도만 가져와주면 된다.
def recipe_list(request):
try:
page=request.GET['page']
except Exception as e:
page="1"
curpage=int(page)
recipe_data=recipeDao.recipeListData(curpage)
rd=[]
for r in recipe_data:
rr={"no":r[0],"title":r[1],"poster":r[2],"chef":r[3]}
rd.append(rr)
temp = request.COOKIES
cookie_data=[]
if temp:
for c in temp:
if c.startswith('k'):
value = request.COOKIES.get(c)
print(value)
cd=recipeDao.recipe_info(int(value))
cd2={"no":cd[0],"title":cd[1],"poster":cd[2]}
cookie_data.append(cd2)
return render(request,'recipe/recipe_list.html',{"rd":rd,"cd":cookie_data})
그리고 list의 목록을 출력해주는 views 메소드
일단 temp에서 request에 담겨있는 모든 쿠키정보를 받아온다.
temp = request.COOKIES
만약 쿠키에 저장된 값이 있으면,
if temp:
for문을 돌려서 저장된 쿠키의 값을 하나씩 받아온다.
for c in temp:
if c.startswith('k'):
쿠키를 저장할때 k+{no} 형식으로 저장했기 때문에, 꼭 k로 시작하는 값들만 가져오게 한다.
value = request.COOKIES.get(c)
value에 cookie의 값 (여기서는 detail no)를 받아온다.
cd=recipeDao.recipe_info(int(value))
미리 dao에 만들어준 메소드를 사용해서 쿠키에 뿌려줄 값을 가져온다.
cd2={"no":cd[0],"title":cd[1],"poster":cd[2]}
cookie_data.append(cd2)
딕트로 저장을 해주고, 배열에 값을 append해주면 끝이다.
쿠키를 사용할지 안할지는 모르겠지만 일단 사용하고 싶으면 앞으로 이렇게 사용해보려한다.
728x90
반응형
'programming > Gukbi' 카테고리의 다른 글
국비 교육 - 수료 (0) | 2021.06.07 |
---|---|
국비 교육 106일차 - ORM 게시판 만들기,MySQL 사용 (0) | 2021.05.31 |
국비 교육 105일차 - django project 마무리(사진 등록, 템플릿 적용) (0) | 2021.05.28 |
국비 교육 104일차 - django project (include, page block.. ) (0) | 2021.05.28 |
국비 교육 103일차 - CURD 프로그램 (게시판) 만들기 (0) | 2021.05.27 |