淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}
環(huán)境:
python 3.6.4
django2.0.6
使用重定向redirect(‘url name') 如果不需要傳數(shù)據(jù)的話那這樣就OK了 如果要傳數(shù)據(jù)的話 我琢磨了半天 還是決定用session來傳輸
所以 就這么干:
request.session['key_name] = value
request.session['msg'] = u'用戶未登錄'
然后在模板中使用:
<h1>{{ request.session.username }}</h1> {# 輸出username保存的值 #}
{# {{ request.session['username' }} 以及{{ request.session.get('username') }} 和{% request.session.get('username') %} 都是錯(cuò)誤的寫法 #}}
就可以了。嗯 搞定。
補(bǔ)充知識:在django中,redirect如何傳遞message。
眾所周知,在django中,默認(rèn)的message,只能在同一個(gè)request中傳遞。
但如果在請求過程中,使用了redirect跳轉(zhuǎn),那么,這個(gè)一次性的message就會失敗,
無法在前端給用戶提示。
https://stackoverflow.com/questions/29673537/django-redirect-with-context/29673951#29673951
網(wǎng)上提供的思路,有如下兩種:
一,使用message框架中的storeage存儲實(shí)現(xiàn)。我覺得如果消息使用得頻繁,且消息比較長時(shí)使用。
二,使用session來實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)更簡單,但不可太頻繁使用。
下面,就使用第二種來試試吧。
1,在有redirect的view中,加入session。
# 跨request傳遞message,使用session。 self.request.session['create_app'] = name return redirect(reverse_lazy('app:list', args=()))
2,在需要獲取message的view中,加入消息。
# 獲取創(chuàng)建組件成功的session提示,同request傳遞message。 create_app = self.request.session.pop('create_app', False) if create_app: messages.info(self.request, '{}創(chuàng)建成功,請編輯它的配置!'.format(create_app))
3,在前端網(wǎng)頁中,顯示此message。
{% for message in messages %} <div class="alert alert-success alert-dismissible fade in" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> <strong>組件創(chuàng)建提示!</strong> {{ message }}. </div> {% endfor %}
4,樣子
以上這篇淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python pytest.main()運(yùn)行測試用例
這篇文章主要介紹了Python pytest.main()運(yùn)行測試用例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12Python 刪除List元素的三種方法remove、pop、del
這篇文章主要介紹了Python 刪除List元素的三種方法remove、pop、del,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python 序列化和反序列化庫 MarshMallow 的用法實(shí)例代碼
marshmallow(Object serialization and deserialization, lightweight and fluffy.)用于對對象進(jìn)行序列化和反序列化,并同步進(jìn)行數(shù)據(jù)驗(yàn)證。這篇文章主要介紹了Python 序列化和反序列化庫 MarshMallow 的用法實(shí)例代碼,需要的朋友可以參考下2020-02-02pyqt5教程QGraphicsScene及QGraphicsView使用基礎(chǔ)
這篇文章主要為大家介紹了pyqt5教程中QGraphicsScene及QGraphicsView使用基礎(chǔ),有序要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10django如何根據(jù)現(xiàn)有數(shù)據(jù)庫表生成model詳解
這篇文章主要給大家介紹了關(guān)于django如何根據(jù)現(xiàn)有數(shù)據(jù)庫表生成model的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-08-08Python使用zip合并相鄰列表項(xiàng)的方法示例
這篇文章主要介紹了Python使用zip合并相鄰列表項(xiàng)的方法,涉及zip、iter函數(shù)合并相鄰列表項(xiàng)、切片等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03django+xadmin+djcelery實(shí)現(xiàn)后臺管理定時(shí)任務(wù)
這篇文章主要介紹了django+xadmin+djcelery實(shí)現(xiàn)后臺管理定時(shí)任務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08Python 實(shí)現(xiàn)將大圖切片成小圖,將小圖組合成大圖的例子
這篇文章主要介紹了Python 實(shí)現(xiàn)將大圖切片成小圖,將小圖組合成大圖的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03