參數可以是:
- 一個模型: 將調用模型的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頁面。