激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Django中幾種重定向方法

Django中幾種重定向方法

2020-06-15 09:57腳本之家 Python

這篇文章主要介紹了Django中幾種重定向方法,本文講解了使用HttpResponseRedirect、redirect、reverse以及配置文件中配置URL等方法,需要的朋友可以參考下

這里使用的是django1.5

需求: 有一個界面A,其中有一個form B, 前臺提交B之后,后臺保存數據之后,返回界面A,如果保存失敗需要在A界面提示錯誤。

這里就需要后臺的重定向,而且需要可以帶著參數,也就是error message
這里收集了幾種方法,簡答說下需要那些包,怎么簡單使用。

一、 使用HttpResponseRedirect

The first argument to the constructor is required – the path to redirect to. This can be a fully qualified URL (e.g.'http://www.yahoo.com/search/') or an absolute path with no domain (e.g. '/search/')。 參數既可以使用完整的url,也可以是絕對路徑。

復制代碼 代碼如下:

from django.http import HttpResponseRedirect 
 
@login_required 
def update_time(request): 
    #pass  ...   form處理 
    return HttpResponseRedirect('/commons/invoice_return/index/')  #跳轉到index界面 


如果需要傳參數,可以通過url參數

復制代碼 代碼如下:

return HttpResponseRedirect('/commons/invoice_return/index/?message=error')  #跳轉到index界面 


這樣在index處理函數中就可以get到錯誤信息。

 

二、 redirect和reverse

 

復制代碼 代碼如下:

from django.core.urlresolvers import reverse 
from django.shortcuts import redirect 
#https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/ 
 
@login_required 
def update_time(request): 
    #pass  ...   form處理 
    return redirect(reverse('commons.views.invoice_return_index', args=[]))  #跳轉到index界面 


redirect 類似HttpResponseRedirect的用法,也可以使用 字符串的url格式 /..inidex/?a=add
reverse 可以直接用views函數來指定重定向的處理函數,args是url匹配的值。 詳細請參見文檔

 

三、 其他

其他的也可以直接在url中配置,但是不知道怎么傳參數。

復制代碼 代碼如下:

from django.views.generic.simple import redirect_to


在url中添加 (r'^one/$', redirect_to, {'url': '/another/'}), 

 

我們甚至可以使用session的方法傳值

復制代碼 代碼如下:

request.session['error_message'] = 'test' 
redirect('%s?error_message=test' % reverse('page_index')) 


這些方式類似于location刷新,客戶端重新指定url。
還沒找到怎么在服務端跳轉處理函數,直接返回response到客戶端的方法。

 

2014-11-13 研究:

是不是之前的想法太死板,重定向,如果需要攜帶參數,那么能不能直接調用views中 url對應的方法來實現呢,默認指定一個參數。
例如view中有個方法baseinfo_account, 然后另一個url(對應view方法為blance_account)要重定向到這個baseinfo_account。

url中的配置:

復制代碼 代碼如下:

urlpatterns = patterns('', 
    url(r'^baseinfo/', 'account.views.baseinfo_account'), 
    url(r'^blance/', 'account.views.blance_account'), 

 

復制代碼 代碼如下:


@login_required 
def baseinfo_account(request, args=None): 
    ?#按照正常的url匹配這么寫有點不合適,看起來不規范 
    ?if args: 
        print args 
    return render(request, 'accountuserinfo.html', {"user": user}) 
 
 
@login_required     
def blance_account(request): 
    return baseinfo_account(request, {"name": "orangleliu"}) 

 

 

 

需要測試為:
1 直接訪問 /baseinfo 是否正常 (測試ok)
2 訪問 /blance 是否能正常的重定向到 /baseinfo 頁面,并且獲取到參數(測試ok,頁面為/baseinfo 但是瀏覽器地址欄的url仍然是/blance)
?
這樣的帶參數重定向是可行的。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 粉嫩粉嫩一区二区三区在线播放 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 国产女厕一区二区三区在线视 | 91精品老司机 | 一级电影中文字幕 | 国产乱色精品成人免费视频 | 99久久久精品国产一区二区 | 成人mm视频在线观看 | a一级黄 | 成人黄色网战 | 国产在线精品一区二区三区不卡 | 国产免费一区二区三区最新不卡 | 美女福利视频国产 | 成人爱情偷拍视频在线观看 | 黄污污网站| 精品久久久久久久久久 | 视频一区二区中文字幕 | 久久免费看片 | 国产流白浆高潮在线观看 | 黄色网址免费入口 | 国产精品一区网站 | 真人一级毛片免费 | 精品国产亚洲人成在线 | 久久精品国产99久久久古代 | 少妇一级淫片免费放4p | 色屁屁xxxxⅹ在线视频 | 精品久久久久久久久久中出 | 国产亚洲精品综合一区91555 | 91看片在线观看视频 | 国产jjizz一区二区三区视频 | 99影视电影电视剧在线播放 | 北京一级毛片 | 久国产精品视频 | 国产一区精品在线观看 | 国产精品免费久久久久 | 亚洲成人黄色片 | 日韩色视频在线观看 | 国产一级桃视频播放 | 性色av免费在线观看 | 国产精品免费在线 | 成人免费网站在线观看视频 |