Django基礎之redirect()

參數能夠是:python

  • 一個模型: 將調用模型的get_absolute_url()函數
  • 一個視圖, 能夠帶有函數: 能夠使用urlresolvers.reverse來反向解析名稱
  • 一個絕對的或相對的URL, 將原封不動的做爲重定向的位置.

默認返回一個臨時的重定向, 傳遞permanent=True能夠返回一個永久的重定向.
示例:
你能夠用多種方式使用redirect()函數.
傳遞一個具體的ORM對象(瞭解便可).
將調用具體ORM對象的get_absolute_url()方法來獲取重定向的URL.django

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/")

固然也能夠是一個完整的網址url

def my_view(request):
    ...
    return redirect("http://example.com")

默認狀況下, redirect()返回一個臨時重定向. 以上全部的形式都接收一個permanent參數; 若是設置爲True, 將返回一個永久的重定向:spa

def my_view(request):
    ...
    object = MyModel.objects.get(...)
    return redirect(object, permanent=True)

 擴展閱讀:

臨時重定向(響應狀態碼: 302)和永久重定向(響應狀態碼: 301)對普通用戶來講是沒什麼區別的, 它主要面向的是搜索引擎的機器人。code

A頁面臨時重定向B頁面, 那搜索引擎收錄的就是B頁面。對象

相關文章
相關標籤/搜索