django開發系列:視圖高級之重定向
重定向分爲永久性重定向
和暫時性重定向
,在頁面上體現的操作就是瀏覽器會從一個頁面自動跳轉到另外一個頁面。比如用戶訪問了一個需要權限的頁面,但是該用戶當前並沒有登錄,因此我們應該給他重定向到登錄頁面。
永久性重定向
:http的狀態碼是301
,多用於舊網址被廢棄了要轉到一個新的網址確保用戶的訪問,最經典的就是京東網站,你輸入www.jingdong.com的時候,會被重定向到www.jd.com,因爲jingdong.com這個網址已經被廢棄了,被改成jd.com,所以這種情況下應該用永久重定向。
暫時性重定向
:http的狀態碼是302
,表示頁面的暫時性跳轉。比如訪問一個需要權限的網址(比如知乎首頁),如果當前用戶沒有登錄,應該重定向到登錄頁面,這種情況下,應該用暫時性重定向。
在Django中,重定向是使用redirect(to, *args, permanent=False, **kwargs)
來實現的。to是一個url,permanent代表的是這個重定向是否是一個永久的重定向,默認是False。
from django.shortcuts import reverse,redirect
def index(request):
# 如果沒有添加字段 /?username=xxx
# 則跳轉到註冊頁面
if request.GET.get("username"):
return HttpResponse("index page")
else:
return redirect(reverse("login"))
def login(request):
return HttpResponse("logging page")