تتيح لك جلسات جانغو تخزين البيانات واسترجاعها في جلسة المستخدم. الجلسة هي وسيلة لتخزين البيانات على جانب الخادم لمستخدم معين، ويتم تنفيذها عادةً باستخدام ملفات تعريف الارتباط.
عندما يزور مستخدم تطبيق جانغو، يقوم الخادم بإنشاء مفتاح جلسة فريد ويخزنه في ملف تعريف الارتباط على جهاز الكمبيوتر الخاص بالمستخدم. يتم استخدام مفتاح الجلسة لتحديد المستخدم في الطلبات اللاحقة، ويتم تخزين البيانات المرتبطة بمفتاح الجلسة على جانب الخادم.
يوفر Django واجهة بسيطة للعمل مع الجلسات، مما يسمح لك بتخزين واسترجاع البيانات في جلسة المستخدم باستخدام سمة request.session
. و هي كائن يشبه القاموس يسمح لك بتخزين واسترجاع البيانات في جلسة المستخدم باستخدام طرق القاموس القياسية مثل request.session['key'] = value and value = request.session['key']
حالات استخدام جلسة جانغو
فيما يلي بعض الأشياء المثيرة للاهتمام التي يمكنك القيام بها باستخدام جلسات Django:
- تخزين تفضيلات المستخدم: يمكنك استخدام جلسات جانغو لتخزين تفضيلات المستخدم، مثل موضوع التطبيق أو لغته. يمكن أن يكون هذا مفيدًا لتوفير تجربة مخصصة و رائعة للمستخدم.
- تخزين البيانات المؤقتة: يمكنك استخدام جلسات Django لتخزين البيانات المؤقتة المطلوبة لفترة قصيرة من الزمن. على سبيل المثال، يمكنك استخدام جلسات جانغو لتخزين بيانات النموذج أثناء قيام المستخدم بملئه.
- إستخدام عربات التسوق: يمكنك استخدام جلسات Django لإستخدام عربات التسوق في تطبيقك. يمكنك تخزين العناصر التي أضافها المستخدم إلى سلة التسوق الخاصة به في الجلسة، واسترجاعها عندما يكون المستخدم جاهزًا للسحب.
- تنفيذ نماذج متعددة الخطوات: يمكنك استخدام جلسات جانغو لتنفيذ نماذج متعددة الخطوات في تطبيقك. يمكنك تخزين البيانات التي قام المستخدم بإدخالها في كل خطوة من خطوات النموذج في الجلسة، واسترجاعها عندما ينتقل المستخدم إلى الخطوة التالية.
- تنفيذ مصادقة المستخدم: يمكنك استخدام جلسات Django لتنفيذ مصادقة المستخدم في تطبيقك. عندما يقوم المستخدم بتسجيل الدخول، يمكنك تخزين مفتاح الجلسة الخاصة به في ملف تعريف الارتباط، واستخدامه لتحديد المستخدم في الطلبات اللاحقة.
- تخزين نشاط المستخدم: يمكنك استخدام جلسات جانغو لتخزين نشاط المستخدم في تطبيقك. على سبيل المثال، يمكنك تخزين الصفحات التي زارها المستخدم أو الإجراءات التي اتخذها في الجلسة، واستخدام هذه البيانات لتخصيص تجربة المستخدم أو تحليل سلوك المستخدم.
البداية مع جلسات جانغو
لبدء جلسات Django في تطبيقك، ستحتاج إلى تفعيل فئة البرنامج الوسيط SessionMiddleware
في تطبيق جانغو. تتعامل فئة SessionMiddleware
مع إدارة الجلسة في Django وتسمح لك بتخزين واسترجاع البيانات في جلسة المستخدم باستخدام سمة request.session
.
و لتفعيل فئة SessionMiddleware
، ستحتاج إلى إضافتها إلى إعداد MIDDLEWARE
في ملف settings.py :
MIDDLEWARE = [
...
'django.middleware.session.SessionMiddleware',
]
بعد ذلك، ستحتاج إلى إعداد SESSION_ENGINE
في ملف settings.py لتحديد الواجهة الخلفية التي تريد استخدامها لتخزين بيانات الجلسة. يدعم Django عددًا من محركات الواجهة الخلفية لتخزين بيانات الجلسة، بما في ذلك المحركات القائمة على قاعدة البيانات والمحركات القائمة على ذاكرة التخزين المؤقت.
على سبيل المثال، لاستخدام محرك الواجهة الخلفية django.contrib.sessions.backends.db
القائم على قاعدة البيانات، يمكنك إضافة السطر التالي إلى ملف settings.py:
1`SESSION_ENGINE = 'django.contrib.sessions.backends.db'
و بدلاً من ذلك استخدم محرك الواجهة الخلفية django.contrib.sessions.backends.cache
القائم على ذاكرة التخزين المؤقت. لاستخدام محرك الواجهة الخلفية django.contrib.sessions.backends.cache
القائم على ذاكرة التخزين المؤقت لتخزين بيانات الجلسة، ستحتاج إلى إضافة السطر التالي إلى ملف settings.py :
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
ستحتاج أيضًا إلى إعدا الواجهة الخلفية لذاكرة التخزين المؤقت التي تريد استخدامها لتخزين بيانات الجلسة. على سبيل المثال، لاستخدام الواجهة الخلفية لذاكرة التخزين المؤقت locmem
، يمكنك إضافة الأسطر التالية إلى ملف settings.py:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
لاحظ أن الواجهة الخلفية لذاكرة التخزين المؤقت locmem
مناسبة للتطوير والاختبار، ولكنها غير مناسبة لبيئات الإنتاج لأنها لا تحافظ على بيانات ذاكرة التخزين المؤقت عبر عمليات إعادة تشغيل الخادم. بالنسبة لبيئات الإنتاج، ستحتاج إلى استخدام واجهة خلفية أكثر قوة لذاكرة التخزين المؤقت مثل memcached
أو redis
.
و بمجرد قيامك بإعدادات SessionMiddleware
و SESSION_ENGINE
، ستتمكن من استخدام سمة request.session
لتخزين البيانات واستردادها في جلسة المستخدم. على سبيل المثال، لتخزين قيمة في جلسة المستخدم، يمكنك استخدام الكود التالي:
request.session['key'] = value
يمكنك أيضًا استخدام سمة request.session
كقاموس لتخزين واسترجاع قيم متعددة في جلسة المستخدم. على سبيل المثال:
request.session['key1'] = value1
request.session['key2'] = value2
value1 = request.session['key1']
value2 = request.session['key2']
إلى هنا ستكون جاهز لاستخدام جلسات Django في تطبيقك. اما في القسم التالي، سنناقش كيفية تخزين البيانات واسترجاعها في جلسات جانغو.
تخزين واسترجاع البيانات في جلسات جانغو
لتخزين البيانات في جلسة المستخدم، يمكنك استخدام سمة request.session
كقاموس وتخزين البيانات باستخدام توابع القاموس القياسية. على سبيل المثال، لتخزين قيمة في جلسة المستخدم، يمكنك استخدام الكود التالي:
request.session['key'] = value
و لتخزين قيم متعددة في جلسة المستخدم، يمكنك استخدام سمة request.session
كقاموس وتخزين القيم باستخدام توابع القاموس القياسية. على سبيل المثال:
request.session['key1'] = value1
request.session['key2'] = value2
و لاسترداد قيمة من جلسة المستخدم، يمكنك استخدام سمة request.session
كقاموس واسترداد القيمة باستخدام توابع القاموس القياسية. على سبيل المثال:
value = request.session['key']
و لاسترداد قيم متعددة من جلسة المستخدم، يمكنك استخدام سمة request.session
كقاموس واسترداد القيم باستخدام توابع القاموس القياسية. على سبيل المثال:
value1 = request.session['key1']
value2 = request.session['key2']
لاحظ أن سمة request.session
هي كائن يشبه القاموس مدعومًا بواجهة خلفية للتخزين المستمر، مثل قاعدة البيانات أو ذاكرة التخزين المؤقت. وهذا يعني أن البيانات المخزنة في الجلسة ستستمر عبر الطلبات، وستكون متاحة للمستخدم في الزيارات اللاحقة للتطبيق.
من المهم أيضا ملاحظة أن البيانات المخزنة في جلسة المستخدم مرتبطة بمفتاح جلسة المستخدم، والذي يتم تخزينه في ملف تعريف الارتباط على جهاز الكمبيوتر الخاص بالمستخدم. حيث إذا قام المستخدم بمسح ملفات تعريف الارتباط الخاصة به أو قام بالتبديل إلى جهاز مختلف، فسيكون لديه مفتاح جلسة مختلف ولن يتمكن من الوصول إلى البيانات المخزنة في جلسته السابقة.
أخيرًا، ضع في اعتبارك أن البيانات المخزنة في جلسة المستخدم يمكن الوصول إليها من خلال أي دالة عرض يزورها المستخدم. لذلك تأكد من تخزين البيانات في الجلسة التي تريد أن تكون متاحة للمستخدم طوال الجلسة فقط.
استخدام جلسات Django لتفضيلات المستخدم
يمكن أن تكون جلسات Django مفيدة لتخزين تفضيلات المستخدم في تطبيقك. على سبيل المثال، يمكن إستخدامها لتخزين القالب أو تفضيل اللغة للمستخدم، واستخدام هذا التفضيل لتخصيص تجربة المستخدم في تطبيقك.
لتخزين تفضيلات المستخدم في الجلسة، يمكنك استخدام سمة request.session
كقاموس وتخزين التفضيلات باستخدام توابع القاموس القياسية. على سبيل المثال، لتخزين تفضيلات القالب الخاصة بالمستخدم في الجلسة، يمكنك استخدام الكود التالي:
request.session['theme'] = 'dark'
و لاسترداد تفضيلات قالب المستخدم من الجلسة، يمكنك استخدام سمة request.session
كقاموس واسترداد التفضيلات باستخدام توابع القاموس القياسية. على سبيل المثال:
theme = request.session['theme']
يمكنك بعد ذلك استخدام تفضيلات قالب المستخدم لتخصيص مظهر التطبيق. على سبيل المثال، يمكنك استخدام الكود التالي لتعيين قالب التطبيق بناءً على تفضيلات المستخدم:
if theme == 'dark':
# set dark theme
else:
# set light theme
و لتخصيص مظهر تطبيقك بناءً على تفضيلات المستخدم باستخدام نظام قوالب Django، يمكنك استخدام علامة القالب if
لتضمين أو استبعاد عناصر معينة بشكل مشروط في القالب بناءً على تفضيلات المستخدم.
على سبيل المثال، يمكنك استخدام الكود التالي في القالب لتعيين مظهر تطبيقك بناءً على تفضيلات المستخدم:
{% if theme == 'dark' %}
<link rel="stylesheet" href="dark-theme.css">
{% else %}
<link rel="stylesheet" href="light-theme.css">
{% endif %}
سيتضمن هذا الكود ملف dark-theme.css إذا تم تعيين تفضيلات المظهر الخاصة بالمستخدم على “dark”، وسيتضمن ملف light-theme.css إذا تم تعيين تفضيلات المظهر الخاصة بالمستخدم على أي شيء آخر.
ضع في اعتبارك أن تفضيلات المستخدم يتم تخزينها في الجلسة، والتي يمكن الوصول إليها من خلال أي دالة عرض يزورها المستخدم. تأكد من تخزين التفضيلات في الجلسة فقط والتي تريد أن تكون متاحة للمستخدم طوال الجلسة.
عربات التسوق مع جلسات جانغو
يمكن أن تكون جلسات Django مفيدة لتنفيذ عربات التسوق في تطبيقك. عربة التسوق هي ميزة تتيح للمستخدمين إضافة عناصر إلى عربة التسوق الافتراضية وشرائها في وقت لاحق.
لتنفيذ عربة التسوق باستخدام جلسات Django، يمكنك تخزين العناصر التي أضافها المستخدم إلى سلة التسوق الخاصة به في الجلسة. يمكنك تخزين العناصر كقائمة أو قاموس في الجلسة، واستخدام القائمة القياسية أو أساليب القاموس لإضافة العناصر الموجودة في سلة التسوق وإزالتها وتعديلها.
على سبيل المثال، لتنفيذ عربة تسوق باستخدام قائمة في الجلسة، يمكنك استخدام الكود التالي لإضافة عنصر إلى عربة التسوق:
item = {'name': 'Book', 'price': 10.99}
request.session['cart'].append(item)
و لاسترداد العناصر الموجودة في سلة التسوق، يمكنك استخدام الكود التالي:
items = request.session['cart']
و لإزالة عنصر من سلة التسوق، يمكنك استخدام الكود التالي:
request.session['cart'].remove(item)
وبدلاً من ذلك، يمكنك تنفيذ عربة تسوق باستخدام قاموس في الجلسة، حيث المفاتيح هي معرفات المنتج والقيم هي كميات المنتجات الموجودة في عربة التسوق. على سبيل المثال:
# Add an item to the cart
request.session['cart'][product_id] = quantity
# Retrieve the items in the cart
items = request.session['cart']
# Remove an item from the cart
del request.session['cart'][product_id]
# Clear the cart
request.session['cart'] = {}
بمجرد الانتهاء من تنفيذ عربة التسوق، يمكنك استخدامها لعرض العناصر الموجودة في عربة التسوق للمستخدم والسماح له بشراء العناصر. يمكنك أيضًا استخدام عربة التسوق لتخزين حالة عملية الدفع، مثل عنوان الشحن وتفاصيل الدفع الخاصة بالمستخدم.
ضع في اعتبارك أن عربة التسوق مخزنة في جلسة المستخدم، والتي يمكن الوصول إليها من خلال أي دالة عرض يزورها المستخدم. تأكد من تخزين العناصر التي أضافها المستخدم إلى عربة التسوق الخاصة به في الجلسة فقط، ومن التعامل بشكل صحيح مع الحالات التي يقوم فيها المستخدم بإضافة أو إزالة العناصر من عربة التسوق الخاصة به.
بالإضافة إلى ذلك، من الجيد تنفيذ شكل من أشكال التحقق من الصحة ومعالجة الأخطاء في تنفيذ سلة التسوق الخاصة بك. على سبيل المثال، يمكنك التحقق من صحة إدخال المستخدم عند إضافة عناصر أو تعديلها في سلة التسوق، وعرض رسائل الخطأ إذا كان الإدخال غير صالح. يمكنك أيضًا تنفيذ معالجة الأخطاء في الحالات التي يحاول فيها المستخدم إضافة عنصر غير متوفر في المخزون أو يتجاوز الحد الأقصى للكمية المسموح بها.
أخيرًا، ضع في اعتبارك أن البيانات المخزنة في جلسة المستخدم مرتبطة بمفتاح جلسة المستخدم، والذي يتم تخزينه في ملف تعريف الارتباط على جهاز الكمبيوتر الخاص بالمستخدم.
إذا قام المستخدم بمسح ملفات تعريف الارتباط أو قام بالتبديل إلى جهاز مختلف، فسيكون لديه مفتاح جلسة مختلف ولن يتمكن من الوصول إلى العناصر الموجودة في عربة التسوق السابقة. قد ترغب في التفكير في تنفيذ شكل من أشكال الثبات لعربة التسوق، مثل تخزين العربة في قاعدة بيانات أو استخدام واجهة خلفية أكثر قوة للجلسة، للتأكد من أن عربة التسوق الخاصة بالمستخدم متاحة له في الزيارات اللاحقة للتطبيق.
إستمارات متعددة الخطوات مع جلسات جانغو
يمكن أن تكون جلسات جانغو مفيدة لتنفيذ إستمارات (forms) متعددة الخطوات في تطبيقك. فالإستمارة متعدد الخطوات هو إستمارة مقسمة إلى خطوات متعددة، حيث يقوم المستخدم بملء خطوة واحدة في كل مرة والتنقل بين الخطوات لإكمال الإستمارة.
و لتنفيذ إستمارة متعدد الخطوات باستخدام جلسات جانغو، يمكنك تخزين البيانات التي أدخلها المستخدم في الإستمارة في الجلسة. و يمكنك تخزين البيانات كقاموس في الجلسة، واستخدام توابع القاموس القياسية لإضافة البيانات في الإستمارة وتعديلها وحذفها.
على سبيل المثال، لتنفيذ إستمارة متعدد الخطوات باستخدام قاموس في الجلسة، يمكنك استخدام الكود التالي لتخزين البيانات التي أدخلها المستخدم في الإستمارة:
# Store the data that the user has entered in the form
request.session['form_data'] = {
'field1': value1,
'field2': value2,
...
}
و لاسترداد البيانات التي قام المستخدم بإدخالها في الإستمارة، يمكنك استخدام الكود التالي:
# Retrieve the data that the user has entered in the form
form_data = request.session['form_data']
كما يمكنك القيام بتعديل البيانات التي قام المستخدم بإدخالها في الإستمارة، يمكنك استخدام الكود التالي:
request.session['form_data']['field1'] = new_value1
request.session['form_data']['field2'] = new_value2
حذف البيانات التي قام المستخدم بإدخالها في الإستمارة، يمكنك استخدام الكود التالي:
del request.session['form_data']['field1']
del request.session['form_data']['field2']
بمجرد الانتهاء من تنفيذ الإستمارة متعددة الخطوات، يمكنك استخدامها لعرض الإستمارة للمستخدم والسماح له بالتنقل بين الخطوات لإكمال الإستمارة. يمكنك استخدام البيانات المخزنة في الجلسة لملء حقول الإستمارة مسبقًا بالبيانات التي أدخلها المستخدم في الخطوات السابقة، وللتحقق من صحة البيانات التي أدخلها المستخدم.
على سبيل المثال، يمكنك استخدام الكود التالي في القالب الخاص بك لعرض الإستمارة للمستخدم وملء حقولها مسبقًا بالبيانات المخزنة في الجلسة:
<form method="post" action="{% url 'form_view' %}">
{% csrf_token %}
<label for="field1">Field 1:</label>
<input type="text" name="field1" value="{{ request.session.form_data.field1 }}">
<br>
<label for="field2">Field 2:</label>
<input type="text" name="field2" value="{{ request.session.form_data.field2 }}">
<br>
...
<input type="submit" value="Submit">
</form>
يمكنك بعد ذلك استخدام البيانات المخزنة في الجلسة للتحقق من صحة البيانات التي أدخلها المستخدم في الإستمارة. على سبيل المثال، يمكنك استخدام الكود التالي في دالة العرض للتحقق من صحة البيانات التي أدخلها المستخدم في الإستمارة:
# Validate the data that the user has entered in the form
form_data = request.session['form_data']
if form_data['field1'] == '':
# Display an error message
elif form_data['field2'] == '':
# Display an error message
else:
# Save the form data to the database
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.