對Django 轉(zhuǎn)發(fā)和重定向的實例詳解
轉(zhuǎn)發(fā)和重定向:
轉(zhuǎn)發(fā):一次請求和響應(yīng),請求的地址沒有發(fā)生變化,如果此時刷新頁面,就會出現(xiàn)重做現(xiàn)象。
重定向:一次以上的請求和響應(yīng),請求地址發(fā)生一次以上的變化,如果此時刷新頁面,就不會發(fā)生重做現(xiàn)象。
我來舉個簡單的列子,比如我手機(jī)號上不了4G網(wǎng),我打電話給10086,說了我這個情況后,她會把這個情況反映給技術(shù)人員,來幫我解決這個問題,如果說我又有這個問題的話直接點擊重播就好了,但我重播的是10086這個號碼,然后再有她轉(zhuǎn)給技術(shù)人員,如果再有問題還得繼續(xù)這樣,那么就顯得很麻煩了,那這時候10086的工作人員可以在我撥打10086的時候直接轉(zhuǎn)到技術(shù)人員哪里,雖然外面的撥的電話是10086,但接的卻是技術(shù)人員的號碼。雖然這個例子很垃圾,但差不多就是這個意思。
這個問題可以在原來的項目上改一下就可以了,因為我前面的項目早已經(jīng)介紹過了,所以就不說了,就在原來的文件上進(jìn)行更改
如果不做重定向的話,我們在提交用戶名和密碼的時候,這時候點刷新時,用戶名和密碼會一直提交,如果數(shù)據(jù)庫沒有做限制的話,那么就會出現(xiàn)多個相同的用戶名和密碼。
要解決這個問題,首先我們要做一個命名空間,將我們注冊的每個用戶名用id來進(jìn)行綁定,確保唯一性,而且注冊成功后直接跳轉(zhuǎn)到show.html那里去,而且還可以把用戶名和密碼顯示出來
1. 首先我們要在Djangoproject這個容器的url.s.py文件里面加入命名空間
我這里寫入命名空間,自定義命名空間名為zc,這個在view.py里面會寫到
2. 根據(jù)我之前寫的博客,容器的urls.py會查找項目的urls.py,這里也要做一些修改
這里我們在3行中寫app_name='zc',這句也是命名空間,這是為了對應(yīng)view.py中redirect函數(shù)里面reverse的zc:show,第6行中加了<int:id>,這個的意思是將數(shù)據(jù)庫的id使用進(jìn)來了,這樣我們就可以用show/id,可以顯示數(shù)據(jù)的id,也可更改id來查找數(shù)據(jù),這個和view.py里面的args=[zc.id]有關(guān),后面那個name='show' 的意思是取個別名,對應(yīng)的也是view.py里面的zc:show,表名這個命名空間里面放的是show函數(shù)。
3.下面來看view.py文件
這里我們我多導(dǎo)入兩個函數(shù),分別是redirect(重定向問題)、reverse(解決跳轉(zhuǎn)路徑)。
4. views.py這里我們多定義了一個show函數(shù),這里加了函數(shù)要在temp1項目下的urls.py下也要加,告訴urls.py有這個函數(shù)
里面的參數(shù)是id,這個參數(shù)要從外界獲取,這個參數(shù)就是<int:id>,是在urls.py那里獲取到的,在return中我們把我們在15行中得到的用戶名和密碼返回出去,15行g(shù)et(pk=id)的意思是獲取到主鍵的id,這個id里面有用戶名和密碼,這個id號是數(shù)據(jù)庫表在創(chuàng)建前自動創(chuàng)建的,之前的文章我提到過,這里就不多說。
5. 返回的內(nèi)容會賦值給show.html,我們會用兩個參數(shù)來接收
6. 我們來運(yùn)行項目并注冊
7. 然后會跳轉(zhuǎn)到show頁面
這里會把用戶名和密碼顯示出來,而鏈接里面的18則是id,這里表名我們注冊的用戶名在數(shù)據(jù)庫里面的id號是18,我們也可以更改這個id號,改為17的話則會顯示出id號為17的用戶名和密碼。
以上這篇對Django 轉(zhuǎn)發(fā)和重定向的實例詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)字典按key或者value進(jìn)行排序操作示例【sorted】
這篇文章主要介紹了Python實現(xiàn)字典按key或者value進(jìn)行排序操作,結(jié)合實例形式分析了Python針對字典按照key或者value進(jìn)行排序的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05Flask的圖形化管理界面搭建框架Flask-Admin的使用教程
Flask-Admin是一個為Python的Flask框架服務(wù)的微型框架,可以像Django-Admin那樣為用戶生成Model層面的數(shù)據(jù)管理界面,接下來就一起來看一下Flask的圖形化管理界面搭建框架Flask-Admin的使用教程2016-06-06pytorch tensor int型除法出現(xiàn)的問題
這篇文章主要介紹了pytorch tensor int型除法出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04Python+wxPython實現(xiàn)一個簡單的音樂播放器
這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語言和wxPython模塊創(chuàng)建一個簡單的音樂播放器,文中的示例代碼講解詳細(xì),感興趣的可以了解下2023-09-09如何將matlab數(shù)據(jù)導(dǎo)入到Python中使用
這篇文章主要介紹了如何將matlab數(shù)據(jù)導(dǎo)入到Python中使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12