English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في بعض الأحيان، قد تحتاج إلى تخزين بعض بيانات الزائرين وفقًا لمتطلبات تطبيق الويب الخاص بك في كل موقع. تذكر دائمًا أن الحلوى يتم تخزينها على الجهاز الكlient، وتبعاً لمستوى الأمان الخاص بجهاز التصفح الخاص بك، يمكنك تعيين وقت بقاء الحلوى، وفي بعض الأحيان قد لا تحتاج إليها.
لإيضاح كيفية معالجة حلوى Django، دعنا نخلق نظامًا يستخدم وظيفة تسجيل الدخول التي أنشأناها من قبل. النظام سيسمح لك بالدخول لمدة x دقيقة، وبعد ذلك، سيقوم التطبيق تلقائيًا بإلغاء تسجيل دخولك.
لهذا الغرض، يجب إعداد حلوىين: last_connection و username.
أولاً، دعنا نغير عرض login لتخزين اسم المستخدم و ملفات الحلوى last_connection -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ar.oldtoolbag.com # Date : 2020-08-08 من django.template استورد RequestContext تعريف login(request): username = "لم يتم تسجيل الدخول" إذا كان طلب request.method == "POST": #Get the posted form MyLoginForm = LoginForm(request.POST) if MyLoginForm.is_valid(): username = MyLoginForm.cleaned_data['username'] else: MyLoginForm = LoginForm() response = render_to_response(request, 'loggedin.html', {"username": username}, context_instance = RequestContext(request)) response.set_cookie('last_connection', datetime.datetime.now()) response.set_cookie('username', datetime.datetime.now()) return response
正如在上面这个视图,设置cookie是通过调用setcookie方法完成的,而不是请求响应的,还要注意所有Cookie的值都是作为字符串返回的。
让我们为登录表单创建一个FormView,我们将不会显示的表单,如果Cookie设置并且在10秒内 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ar.oldtoolbag.com # Date : 2020-08-08 def formView(request): if 'username' in request.COOKIES and 'last_connection' in request.COOKIES: username = request.COOKIES['username'] last_connection = request.COOKIES['last_connection'] last_connection_time = datetime.datetime.strptime(last_connection[:-7], "%Y-%m-%d %H:%M:%S") if (datetime.datetime.now() - last_connection_time).seconds < 10: return render(request, 'loggedin.html', {"username": username}) else: return render(request, 'login.html', {}) else: return render(request, 'login.html', {})
يمكنك الوصول إلى الـ Cookie الذي قمت بتعيينه في عرض formView، من خلال استخدام خاصية COOKIES كـ ميزة (مفتاح) (مستند)
الآن قم بتعديل ملف url.py لتغيير URL، وتنسيق العرض الجديد -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ar.oldtoolbag.com # Date : 2020-08-08 from django.conf.urls import patterns, url from django.views.generic import TemplateView urlpatterns = patterns('myapp.views', url(r'^connection/','formView', name='loginform'), url(r'^login/', 'login', name='login'))
عند زيارة /myapp/connection، ستنتقل إلى الصفحة التالية -
سيتم توجيهك بعد الإرسال إلى الشاشة التالية -
الآن، إذا زرت /myapp/connection مرة واحدة في غضون 10 ثوانٍ، سيتم توجيهك مباشرة إلى الشاشة الثانية. إذا زرتها مرة أخرى خارج هذا النطاق، ست��ح نموذج الـ login (الشاشة 1).