溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在django中怎么使用redirect重定向數(shù)據(jù)傳輸

發(fā)布時(shí)間:2021-06-11 15:24:48 來(lái)源:億速云 閱讀:1049 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下在django中怎么使用redirect重定向數(shù)據(jù)傳輸,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

環(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'用戶未登錄'

然后在模板中使用:

<h2>{{ request.session.username }}</h2> {# 輸出username保存的值 #}
{# {{ request.session['username' }} 以及{{ request.session.get('username') }} 和{% request.session.get('username') %} 都是錯(cuò)誤的寫法 #}}

就可以了。嗯 搞定。

補(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'] = 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)建成功,請(qǐng)編輯它的配置!'.format(create_app))

3,在前端網(wǎng)頁(yè)中,顯示此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ù)傳輸

以上是“在django中怎么使用redirect重定向數(shù)據(jù)傳輸”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI