淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯?wèn)題
環(huán)境:
python 3.6.4
django2.0.6
使用重定向redirect(‘url name’) 如果不需要傳數(shù)據(jù)的話那這樣就OK了 如果要傳數(shù)據(jù)的話 我琢磨了半天 還是決定用session來(lái)傳輸
所以 就這么干:
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ò)誤的寫(xiě)法 #}}
就可以了。嗯 搞定。
補(bǔ)充知識(shí):在django中,redirect如何傳遞message。
眾所周知,在django中,默認(rèn)的message,只能在同一個(gè)request中傳遞。
但如果在請(qǐng)求過(guò)程中,使用了redirect跳轉(zhuǎn),那么,這個(gè)一次性的message就會(huì)失敗,
無(wú)法在前端給用戶提示。
https://stackoverflow.com/questions/29673537/django-redirect-with-context/29673951#29673951
網(wǎng)上提供的思路,有如下兩種:
一,使用message框架中的storeage存儲(chǔ)實(shí)現(xiàn)。我覺(jué)得如果消息使用得頻繁,且消息比較長(zhǎng)時(shí)使用。
二,使用session來(lái)實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)更簡(jiǎn)單,但不可太頻繁使用。
下面,就使用第二種來(lái)試試吧。
1,在有redirect的view中,加入session。
# 跨request傳遞message,使用session。self.request.session[’create_app’] = namereturn 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)建成功,請(qǐng)編輯它的配置!’.format(create_app))
3,在前端網(wǎng)頁(yè)中,顯示此message。
{% for message in messages %}<div role='alert'> <button type='button' 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ù)膯?wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Android如何加載Base64編碼格式圖片2. 詳解Android studio 動(dòng)態(tài)fragment的用法3. 解決Android studio xml界面無(wú)法預(yù)覽問(wèn)題4. 基于android studio的layout的xml文件的創(chuàng)建方式5. 圖文詳解vue中proto文件的函數(shù)調(diào)用6. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁(yè)效果(實(shí)例代碼)7. 什么是python的自省8. 使用Android studio查看Kotlin的字節(jié)碼教程9. Vuex localStorage的具體使用10. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)

網(wǎng)公網(wǎng)安備