문제

.NET 's와 비슷한 여러 가지 값을 가진 Django를 통해 쿠키를 설정하고 싶습니다. httpcookie.values 재산. 보고 선적 서류 비치, 이것이 가능한지 알 수 없습니다. 그것은 단지 문자열을 가져가는 것처럼 보이므로 다른 방법이 있습니까?

배열을 전달하려고 시도했습니다 ([10, 20, 30]) 및 사전 ({'name': 'Scott', 'id': 1}) 그러나 그들은 단지 문자열 형식으로 변환됩니다. 내 현재 솔루션은 임의의 분리기를 사용한 다음 읽을 때 구문 분석하는 것입니다. 다중 값이 불가능한 경우 더 좋은 방법이 있습니까? 오히려 쿠키를 많이 사용하지 않을 것입니다. 왜냐하면 그것은 성가시기 때문입니다.

도움이 되었습니까?

해결책

.Nets Multi-Value 쿠키는 분리기를 사용하여 Django에서 수행하는 것과 정확히 동일한 방식으로 작동합니다. 그들은 방금 당신을 위해 그것을 추상화했습니다. 당신이하는 일은 괜찮고 적절하며, Django 가이 문제를 '해결'할 수있는 특정한 내용이 없다고 생각합니다.

여러 쿠키를 사용하지 않고 옳은 일을하고 있다고 말할 것입니다. 당신이하고있는 일을함으로써 와이어 오버 헤드를 내려 놓으십시오.

다른 팁

좀 더 추상적 인 것을 찾고 있다면 사용해보십시오. 세션. 나는 그들이 작동하는 방식이 데이터베이스 레코드와 일치하는 쿠키에 ID를 저장하는 것이라고 생각합니다. 원하는 것을 보관할 수 있습니다. 원하는 것과 정확히 같지는 않지만 소량의 DB 오버 헤드를 신경 쓰지 않으면 효과가있을 수 있습니다.

(늦은 답변!)

이것은 부피가 좋지만 항상 Python의 내장 직렬화를 사용합니다.

항상 다음과 같은 작업을 수행 할 수 있습니다.

import pickle
class MultiCookie():
    def __init__(self,cookie=None,values=None):
        if cookie != None:
            try:
                self.values = pickle.loads(cookie)
            except:
                # assume that it used to just hold a string value
                self.values = cookie
        elif values != None:
            self.values = values
        else:
            self.values = None

    def __str__(self):
        return pickle.dumps(self.values)

그런 다음 쿠키를 얻을 수 있습니다.

newcookie = MultiCookie(cookie=request.COOKIES.get('multi'))
values_for_cookie = newcookie.values

또는 값을 설정하십시오.

mylist = [ 1, 2, 3 ]
newcookie = MultiCookie(values=mylist)
request.set_cookie('multi',value=newcookie)

장고는 그것을 지원하지 않습니다. 가장 좋은 방법은 값을 임의의 분리기로 분리 한 다음 이미 말한 것처럼 문자열을 분할하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top