Django - Chuyển hướng trang
Chuyển hướng trang là cần thiết vì nhiều lý do trong ứng dụng web. Bạn có thể muốn chuyển hướng người dùng đến một trang khác khi một hành động cụ thể xảy ra hoặc về cơ bản trong trường hợp lỗi. Ví dụ: khi người dùng đăng nhập vào trang web của bạn, họ thường được chuyển hướng đến trang chủ chính hoặc đến trang tổng quan cá nhân của mình. Trong Django, chuyển hướng được thực hiện bằng phương pháp 'chuyển hướng'.
Phương thức 'chuyển hướng' nhận làm đối số: URL bạn muốn được chuyển hướng đến dưới dạng chuỗi A dạng xem.
Cho đến nay, myapp / views trông giống như sau:
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)
Hãy thay đổi chế độ xem hello để chuyển hướng đến djangoproject.com và viewArticle của chúng ta để chuyển hướng đến '/ myapp / posts' nội bộ của chúng ta. Để làm như vậy, myapp / view.py sẽ thay đổi thành -
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)
Trong ví dụ trên, đầu tiên chúng tôi đã nhập chuyển hướng từ django.shortcuts và để chuyển hướng đến trang web chính thức của Django, chúng tôi chỉ chuyển URL đầy đủ đến phương thức 'chuyển hướng' dưới dạng chuỗi và đối với ví dụ thứ hai (chế độ xem viewArticle) là 'chuyển hướng' phương thức lấy tên khung nhìn và các tham số của nó làm đối số.
Truy cập / myapp / hello, bạn sẽ thấy màn hình sau:
Và khi truy cập / myapp / article / 42, bạn sẽ thấy màn hình sau:
Cũng có thể chỉ định xem 'chuyển hướng' là tạm thời hay vĩnh viễn bằng cách thêm tham số vĩnh viễn = True. Người dùng sẽ không thấy sự khác biệt, nhưng đây là những chi tiết mà các công cụ tìm kiếm tính đến khi xếp hạng trang web của bạn.
Cũng nên nhớ rằng tham số 'name' mà chúng tôi đã xác định trong url.py khi ánh xạ các URL -
url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),
Tên đó (bài viết ở đây) có thể được sử dụng làm đối số cho phương thức 'chuyển hướng', sau đó chuyển hướng viewArticle của chúng ta có thể được thay đổi từ -
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- Ngoài ra còn có chức năng tạo URL; nó được sử dụng giống như chuyển hướng; phương thức 'đảo ngược' (django.core.urlresolvers.reverse). Hàm này không trả về một đối tượng HttpResponseRedirect, mà chỉ đơn giản là một chuỗi chứa URL của chế độ xem được biên dịch với bất kỳ đối số nào được truyền vào.