Django基礎之redirect()
引數可以是:
- 一個模型: 將呼叫模型的get_absolute_url()函式
- 一個檢視, 可以帶有函式:可以使用urlresolvers.reverse來反向解析名稱
- 一個絕對的或相對的URL, 將原封不動的作為重定向的位置.
預設返回一個臨時的重定向, 傳遞permanent=True可以返回一個永久的重定向.
示例:
你可以用多種方式使用redirect()函式.
傳遞一個具體的ORM物件(瞭解即可).
將呼叫具體ORM物件的get_absolute_url()方法來獲取重定向的URL.
from django.shortcuts import redirect def my_view(request): ... object = MyModel.objects.get(...) return redirect(object)
傳遞一個檢視的名稱
def my_view(request): ... return redirect("some-view-name", foo="bar")
傳遞要重定向到的一個具體的網址
def my_view(request): ... return redirect("/some/url/")
當然也可以是一個完整的網址
def my_view(request): ... return redirect("http://example.com")
預設情況下, redirect()返回一個臨時重定向. 以上所有的形式都接收一個permanent引數; 如果設定為True, 將返回一個永久的重定向:
def my_view(request): ... object = MyModel.objects.get(...) return redirect(object, permanent=True)
擴充套件閱讀:
臨時重定向(響應狀態碼: 302)和永久重定向(響應狀態碼: 301)對普通使用者來說是沒什麼區別的, 它主要面向的是搜尋引擎的機器人。
A頁面臨時重定向B頁面, 那搜尋引擎收錄的就是B頁面。