在伺服器狀態碼中,302以及303代表url位址被重定向了
在flask web框架中,重定向需要使用函式redirect(),如下
def redir():
return redirect('', code=303)
# redirect()接收三個引數,第乙個字串型別的url位址,第二個是狀態碼(預設是302),第三個是response物件(預設是none)
在實際過程中,重定向用的比較多的地方是訪問本站內的位址不存在了,將其重新定向到本站的另乙個url位址中去。有兩種方法可以辦到這一點,第乙個是直接在redirect()函式中,將固定的本站url位址傳入進入,如下
def not_found():
return '不好意思,伺服器維護中,暫停服務'
# 當訪問這個url位址的時候,訪問請求被重定向到本站的'/notfoundpage'這個url對應的檢視函式,由其進行訪問處理
def redir():
return redirect('/notfoundpage')
還有一種辦法就是使用url_for()函式
url_for()函式接收傳參,第乙個引數是檢視函式的名稱,url_for 能根據這個檢視函式的名稱反解析到相對應的url位址,再根據這個位址去訪問url對應的檢視函式。第二個引數是不定長引數,以name='jack'的形式傳入,生成的url位址中會帶請求引數。如下
def not_found():
info = request.args.get('address')
return "sorry,we don't find the information of %s" % info
def my_url_for(address):
print(url_for('not_found', info=address))
# 如果訪問的url位址是/urlfor/china,那麼輸出address的結果是 /notfoundpage?info=china
return redirect(url_for('not_found', info=address)) # info=address也可以不寫,不寫的話就是輸出正常的url位址
也可以寫成這種方式,對於引數的獲取是一樣的
def not_found(info):
# info = request.args.get('address')
return "sorry,we don't find the information of %s" % info # 直接通過傳遞引數的形式,而不通過request.args來獲取
def my_url_for(address): # 如果這個時候也和上文中一樣列印,則結果是 /notfoundpage/china 原因就在於url_for 是根據檢視名稱反映射出url位址
return redirect(url_for('not_found', info=address))
thinkphp學習筆記6 url模式
入口檔案是應用的唯一入口,因為可以多入口,每個應用可以對應乙個入口檔案,系統會從rul引數中解析當前請求的模組,控制器,操作。thinkphp是區分大小寫的,考慮到linux是區分大小寫的,所以在thinkphp中模組,控制器,模型等都是區分大小寫的,並且使用駝峰命名規則。如果我們直接訪問入口檔案i...
(6 URL傳遞引數
一 url對映 1.為什麼會去urls.py檔案中尋找對映呢?因為在 settings.py 檔案中配置了 root urlconf 為 urls.py 所有django會去 urls.py 中尋找。2.在 urls.py 中我們所有的對映,都應該放在 urlpatterns 這個變數中。3.所有的...
Flask學習筆記之url和函式對映
我們首先回顧下第一天的內容,通過下面 我們就能做到固定url到函式的對映,在根路徑下就會返回hello world def hello world return hello world 但有時候我們的url路徑是不固定的,例如有些 針對不同的使用者就是不同的url,傳入的資料也就不一樣。例如下面的 ...