淺談在django中使用redirect重定向資料傳輸的問題
環境:
python 3.6.4
django2.0.6
使用重定向redirect(‘url name') 如果不需要傳資料的話那這樣就OK了 如果要傳資料的話 我琢磨了半天 還是決定用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') %} 都是錯誤的寫法 #}}
就可以了。嗯 搞定。
補充知識:在django中,redirect如何傳遞message。
眾所周知,在django中,預設的message,只能在同一個request中傳遞。
但如果在請求過程中,使用了redirect跳轉,那麼,這個一次性的message就會失敗,
無法在前端給使用者提示。
https://stackoverflow.com/questions/29673537/django-redirect-with-context/29673951#29673951
網上提供的思路,有如下兩種:
一,使用message框架中的storeage儲存實現。我覺得如果訊息使用得頻繁,且訊息比較長時使用。
二,使用session來實現,這個實現更簡單,但不可太頻繁使用。
下面,就使用第二種來試試吧。
1,在有redirect的view中,加入session。
# 跨request傳遞message,使用session。 self.request.session['create_app'] = name return redirect(reverse_lazy('app:list',args=()))
2,在需要獲取message的view中,加入訊息。
# 獲取建立元件成功的session提示,同request傳遞message。 create_app = self.request.session.pop('create_app',False) if create_app: messages.info(self.request,'{}建立成功,請編輯它的配置!'.format(create_app))
3,在前端網頁中,顯示此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>元件建立提示!</strong> {{ message }}. </div> {% endfor %}
4,樣子
以上這篇淺談在django中使用redirect重定向資料傳輸的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。