2

.NETのHttpCookie.Valuesプロパティと同様に、いくつかの異なる値を持つCookieをDjango経由で設定したいと思います。ドキュメントを見ると、これが可能かどうかわかりません。文字列が必要なようですが、別の方法はありますか?

[10, 20, 30]配列( )と辞書( )を渡してみました{'name': 'Scott', 'id': 1}が、文字列形式に変換されます。私の現在の解決策は、任意のセパレーターを使用し、それを読み込むときに解析することです。これは不快に感じます。複数の値が不可能な場合、より良い方法はありますか?迷惑になるので、たくさんのクッキーは使いたくないです。

4

4 に答える 4

7

.NET の複数値 Cookie は、セパレーターを使用して django で行っていることとまったく同じように機能します。彼らはあなたのためにそれを抽象化しました。あなたがやっていることは問題なく適切です.Djangoにはこの問題を「解決」するための特別なものは何もないと思います.

複数のCookieを使用しないという点で、あなたは正しいことをしていると言えます。あなたがしていることをすることによって、オーバーザワイヤーのオーバーヘッドを抑えてください。

于 2008-09-24T18:35:11.277 に答える
1

もう少し抽象化されたものを探している場合は、sessionを使用してみてください。それらが機能する方法は、データベース レコードと一致する ID を Cookie に保存することだと思います。中には好きなものを収納できます。探しているものとまったく同じではありませんが、わずかな db オーバーヘッドを気にしなければ機能する可能性があります。

于 2008-09-25T01:44:18.767 に答える
1

(遅い答え!)

これはよりかさばりますが、常に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)

次に、Cookie を取得できます。

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)
于 2010-03-04T23:24:10.510 に答える
0

Django はサポートしていません。最善の方法は、値を任意の区切り記号で区切ってから、既に述べたように文字列を分割することです。

于 2008-09-24T21:03:05.370 に答える