[Django]幾種重新導向的方式

來源:互聯網
上載者:User

標籤:重新導向   python   django   

這裡使用的是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_requireddef 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 reversefrom django.shortcuts import redirect#https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/ @login_requireddef 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到用戶端的方法。


本文出自 “orangleliu筆記本” 部落格,請務必保留此出處 http://blog.csdn.net/orangleliu/article/details/38347863

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.