English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
التحويلات على الصفحة في تطبيقات الويب ضرورية لأسباب متعددة. قد ترغب في تحويل المستخدم إلى صفحة أخرى عند حدوث عمل معين أو في حالات الخطأ. على سبيل المثال، عند تسجيل المستخدم في الموقع، غالبًا ما يتم تحويله إلى صفحته الرئيسية أو لوحة التحكم الشخصية. في Django، يتم تحقيق التحويل باستخدام طريقة "redirect".
في الطريقة "redirect" يجب أن تكون كاملًا كاسم الرؤية للرابط الذي سيتم تحويله إليه كمعامل.
myapp/views إلى الآن يظهر كما يلي −
# اسم الملف: example.py # حقوق التأليف والنشر: 2020 بواسطة w3codebox # كاتب: ar.oldtoolbag.com # تاريخ: 2020-08-08 def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return render(request, "hello.html", {"today": today, "days_of_week": daysOfWeek}) def viewArticle(request, articleId): """عرض عرض المقالة بناءً على معرفته""" text = "عرض المقالة الرقمية: %s" %articleId return HttpResponse(text) def viewArticles(request, year, month): text = "Displaying articles of : %s/%s"%(year, month) return HttpResponse(text)
دعونا نعدل "hello" لنقوم بالتوجيه إلى djangoproject.com، وكذلك "viewArticle" للتوجيه إلى داخلي '/myapp/articles'. سيتم تعديل myapp/view.py كما يلي:}}
# اسم الملف: example.py # حقوق التأليف والنشر: 2020 بواسطة w3codebox # كاتب: ar.oldtoolbag.com # تاريخ: 2020-08-08 from django.shortcuts import render, redirect from django.http import HttpResponse import datetime # Create your views here. def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return redirect("https://www.djangoproject.com") def viewArticle(request, articleId): """عرض عرض المقالة بناءً على معرفته""" text = "عرض المقالة الرقمية: %s" %articleId return redirect(viewArticles, year = "2045", month = "02") def viewArticles(request, year, month): text = "Displaying articles of : %s/%s"%(year, month) return HttpResponse(text)
في هذا المثال، قمنا أولاً باستيراد "redirect" من Django. الطريقة السريعة، ونقوم بالتوجيه إلى موقع Django الرسمي، نحتاج فقط إلى استخدام URL الكامل كـ string في طريقة "redirect"، وفي المثال الثاني (في واجهة "viewArticle") نأخذ اسم الواجهة وخصائصها كـ parameters.
إذا قمت بزيارة /myapp/hello، سيتم عرض الشاشة التالية-
وإذا قمت بزيارة /myapp/article/42، سيتم عرض الشاشة التالية-
يمكنك أيضًا تحديد ما إذا كان "redirect" مؤقتًا أم دائمًا، بإضافة parameter permanent = True. لن يلاحظ المستخدم أي فرق، ولكن هذه هي التفاصيل، وتأخذ مواقع البحث في الاعتبار عند تصنيف الرتب.
نحن نحدد "name" parameter في تعريف URL في url.py
# اسم الملف: example.py # حقوق التأليف والنشر: 2020 بواسطة w3codebox # كاتب: ar.oldtoolbag.com # تاريخ: 2020-08-08 url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),
يمكن استخدام هذا الاسم (هذا المقال) كمعامل للـ "طريقة redirect"، فإن إعادة توجيه viewArticle يمكن تعديلها -
# اسم الملف: example.py # حقوق التأليف والنشر: 2020 بواسطة w3codebox # كاتب: ar.oldtoolbag.com # تاريخ: 2020-08-08 def viewArticle(request, articleId): """عرض عرض المقالة بناءً على معرفته""" text = "عرض المقالة الرقمية: %s" %articleId return redirect(viewArticles, year = "2045", month = "02")
تعديل إلى -
# اسم الملف: example.py # حقوق التأليف والنشر: 2020 بواسطة w3codebox # كاتب: ar.oldtoolbag.com # تاريخ: 2020-08-08 def viewArticle(request, articleId): """عرض عرض المقالة بناءً على معرفته""" text = "عرض المقالة الرقمية: %s" %articleId return redirect(articles, year = "2045", month = "02")
ملاحظة - هناك دالة توليد URL; وهي تستخدم بنفس الطريقة لإعادة توجيه; "طريقة reverse" (django.core.urlresolvers.reverse). لا تعود هذه الدالة بموضوع HttpResponseRedirect، بل تحتوي فقط على URL وكل المعلمات التي يتم تمريرها لترميز عرض النص.