Django-페이지 리디렉션

웹 응용 프로그램에서는 여러 가지 이유로 페이지 리디렉션이 필요합니다. 특정 작업이 발생하거나 기본적으로 오류가 발생하는 경우 사용자를 다른 페이지로 리디렉션 할 수 있습니다. 예를 들어 사용자가 귀하의 웹 사이트에 로그인하면 종종 기본 홈 페이지 또는 개인 대시 보드로 리디렉션됩니다. Django에서 리디렉션은 'redirect'메소드를 사용하여 수행됩니다.

'redirect'메소드는 인수로 사용됩니다. 문자열 A보기의 이름으로 리디렉션 될 URL입니다.

myapp / views는 지금까지 다음과 같습니다.

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)

hello 뷰를 djangoproject.com으로 리디렉션하고 viewArticle을 내부 '/ myapp / articles'로 리디렉션하도록 변경해 보겠습니다. 이를 위해 myapp / view.py는 다음과 같이 변경됩니다.

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)

위의 예에서 먼저 django.shortcuts에서 리디렉션을 가져 왔고 Django 공식 웹 사이트로 리디렉션하려면 전체 URL을 'redirect'메서드에 문자열로 전달하고 두 번째 예제 (viewArticle 뷰)에서는 'redirect'를 전달합니다. 메소드는 뷰 이름과 그의 매개 변수를 인수로받습니다.

/ myapp / hello에 액세스하면 다음 화면이 표시됩니다.

그리고 / myapp / article / 42에 액세스하면 다음 화면이 표시됩니다.

영구 = True 매개 변수를 추가하여 '리디렉션'이 임시인지 영구적인지 여부를 지정할 수도 있습니다. 사용자에게는 차이가 없지만 웹 사이트 순위를 매길 때 검색 엔진이 고려하는 세부 정보입니다.

또한 URL을 매핑하는 동안 url.py에서 정의한 'name'매개 변수를 기억하십시오.

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

그 이름 (여기 기사)은 '리디렉션'메소드의 인수로 사용할 수 있으며, viewArticle 리디렉션은 다음과 같이 변경할 수 있습니다.

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을 생성하는 기능도 있습니다. 리디렉션과 동일한 방식으로 사용됩니다. 'reverse'메소드 (django.core.urlresolvers.reverse). 이 함수는 HttpResponseRedirect 개체를 반환하지 않고 전달 된 인수로 컴파일 된 뷰에 대한 URL이 포함 된 문자열을 반환합니다.