هل يدعم Django ملفات تعريف الارتباط متعددة القيم؟

StackOverflow https://stackoverflow.com/questions/128815

  •  02-07-2019
  •  | 
  •  

سؤال

أرغب في تعيين ملف تعريف ارتباط عبر Django يحتوي على عدة قيم مختلفة له، على غرار .NET HttpCookie.Values ملكية.أنظر إلى توثيق, ، لا أستطيع معرفة ما إذا كان هذا ممكنًا.يبدو أن الأمر يتطلب سلسلة فقط، فهل هناك طريقة أخرى؟

لقد حاولت تمريرها مصفوفة ([10, 20, 30]) والقاموس ({'name': 'Scott', 'id': 1}) ولكن يتم تحويلهم إلى تنسيق السلسلة الخاص بهم.الحل الحالي الخاص بي هو مجرد استخدام فاصل عشوائي ثم تحليله عند قراءته، وهو ما يبدو سيئًا.إذا كانت القيم المتعددة غير ممكنة، فهل هناك طريقة أفضل؟أفضّل عدم استخدام الكثير من ملفات تعريف الارتباط، لأن ذلك قد يكون مزعجًا.

هل كانت مفيدة؟

المحلول

تعمل ملفات تعريف الارتباط متعددة القيم لـ .NET تمامًا بنفس الطريقة التي تعمل بها في Django باستخدام فاصل.لقد استخرجوا ذلك بعيدًا عنك.ما تفعله جيد ومناسب، ولا أعتقد أن Django لديه أي شيء محدد "لحل" هذه المشكلة.

سأقول إنك تفعل الشيء الصحيح، بعدم استخدام ملفات تعريف الارتباط المتعددة.أبقِ الأسلاك العلوية لأسفل من خلال القيام بما تفعله.

نصائح أخرى

إذا كنت تبحث عن شيء أكثر تجريدًا، فحاول استخدام جلسات.أعتقد أن الطريقة التي يعملون بها هي تخزين معرف في ملف تعريف الارتباط يطابق سجل قاعدة البيانات.يمكنك تخزين ما تريد فيه.إنه ليس تمامًا ما تبحث عنه، ولكنه قد ينجح إذا كنت لا تمانع في تحمل قدر صغير من الديسيبل.

(رد متأخر!)

سيكون هذا أكبر حجمًا، لكن عليك دائمًا استخدام تسلسل بايثون المدمج.

يمكنك دائمًا القيام بشيء مثل:

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