Django - Sayfayı Yeniden Yönlendirme

Web uygulamasında birçok nedenden dolayı sayfa yönlendirmesi gereklidir. Belirli bir eylem gerçekleştiğinde veya temelde hata durumunda bir kullanıcıyı başka bir sayfaya yönlendirmek isteyebilirsiniz. Örneğin, bir kullanıcı web sitenize giriş yaptığında, genellikle ana ana sayfaya veya kişisel kontrol paneline yönlendirilir. Django'da yeniden yönlendirme, 'yeniden yönlendirme' yöntemi kullanılarak gerçekleştirilir.

'Yönlendirme' yöntemi bağımsız değişken olarak şunları alır: Yeniden yönlendirilmek istediğiniz URL, A dizesi görünümünün adı.

Uygulamam / görünümler şu ana kadar aşağıdaki gibi görünüyor -

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):
   """ A view that display an article based on his ID"""
   text = "Displaying article Number : %s" %articleId
   return HttpResponse(text)
	
def viewArticles(request, year, month):
   text = "Displaying articles of : %s/%s"%(year, month)
   return HttpResponse(text)

Merhaba görünümünü djangoproject.com'a ve görünüm Makalemizi dahili '/ uygulamam / makalelerimize' yönlendirecek şekilde değiştirelim. Bunu yapmak için myapp / view.py şu şekilde değişecektir -

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):
   """ A view that display an article based on his ID"""
   text = "Displaying article Number : %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)

Yukarıdaki örnekte, ilk olarak django.shortcuts'tan yeniden yönlendirmeyi içe aktardık ve Django resmi web sitesine yeniden yönlendirme için tam URL'yi dize olarak 'yeniden yönlendirme' yöntemine ve ikinci örnek için (görünüm Makale görünümü) 'yeniden yönlendirme' yöntem, görünüm adını ve parametrelerini bağımsız değişken olarak alır.

/ Myapp / hello'ya erişmek size aşağıdaki ekranı verecektir -

Ve / uygulamam / makale / 42'ye erişmek size aşağıdaki ekranı verecektir -

Kalıcı = Doğru parametresi ekleyerek 'yeniden yönlendirme'nin geçici mi yoksa kalıcı mı olduğunu belirtmek de mümkündür. Kullanıcı hiçbir fark görmeyecektir, ancak bunlar, arama motorlarının web sitenizi sıralarken dikkate aldığı ayrıntılardır.

Ayrıca, URL'leri eşlerken url.py dosyamızda tanımladığımız 'ad' parametresini de unutmayın -

url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),

Bu ad (buradaki makale) 'yönlendirme' yöntemi için bağımsız değişken olarak kullanılabilir, ardından bizim görüşümüz Makale yönlendirme -

def viewArticle(request, articleId):
   """ A view that display an article based on his ID"""
   text = "Displaying article Number : %s" %articleId
   return redirect(viewArticles, year = "2045", month = "02")

To -

def viewArticle(request, articleId):
   """ A view that display an article based on his ID"""
   text = "Displaying article Number : %s" %articleId
   return redirect(articles, year = "2045", month = "02")

Note- URL oluşturmak için bir işlev de vardır; yönlendirme ile aynı şekilde kullanılır; 'ters' yöntem (django.core.urlresolvers.reverse). Bu işlev bir HttpResponseRedirect nesnesi döndürmez, sadece iletilen herhangi bir bağımsız değişkenle derlenen görünümün URL'sini içeren bir dize döndürür.