使用Django的時候,頁面請求正常,也沒有報任何錯誤,甚至連警告都沒有的狀況下,頁面卻仍是原地不動或者閃一下或者無限顯示加載動畫的狀況下的解決辦法

這個問題描述比較籠統,但根據我目前遇到過兩種狀況來看,彷佛都比較重要並且實用,因此打算分別講述一下。
說明:Django的版本是Django2.0css

第一種:URL配置錯誤

頁面閃一下,卻原地不動,多是下邊這種狀況。html

例以下列連個URL:前端

re_path(r'^(\w+)/(\w+)/', views.display_table_objs,name="table_objs"),
re_path(r'^(\w+)/(\w+)/(\d+)/change/', views.table_obj_change,name="table_obj_change"),

你會發現第二個路由訪問請求都毫無做用,但各類調試器查看器服務器控制檯等都告訴你「200」,一切正常。正則表達式

做爲一個Django新手,也是一臉懵逼,花了近一個小時終於搞明白,這個問題也是Django新手噴油們常犯的錯誤。歸根結底是正則表達式使用不正確.。上邊兩個URL只限制了開頭,沒有限制結尾,因此URL都會在Django算法的做用下直接打開(\w+)/(\w+)/,而若是地址欄已是(\w+)/(\w+)/的話,天然是「原地不動」了。毫無疑問,Django的算法是一旦找到一個匹配結果就立馬顯示,這的確是高效的,不須要去遍歷全部的URL,但這也產生了以上問題。算法

解決方案:

re_path(r'^(\w+)/(\w+)/$', views.display_table_objs,name="table_objs"),
re_path(r'^(\w+)/(\w+)/(\d+)/change/$', views.table_obj_change,name="table_obj_change"),

加上結束符號「$」,則Django就必須徹底匹配方能跳轉,則網頁運行正常。服務器

第二種:新頁面的渲染過程當中出現了「不可描述的錯誤」

咱們知道,一旦Django或者Python代碼出錯,則會馬上反映到頁面上,致使程序終止。可是寫過前端的朋友必定清楚,不管是JS仍是html仍是css,都是很是「包容」的語言。簡單來講:一點小錯,無傷大雅;滿篇錯誤,照樣執行。若是不在調試環境下運行,那麼任何錯誤百出的html頁面都能「硬着頭皮」運行下去。這一點也毫無疑問是有好有壞,好處自沒必要說,這讓前端頁面有了極高的容錯率和兼容性,這簡直是安身立命之本。可是壞處就是,一旦須要加載的頁面出現了某些「致命」錯誤,也不會有報錯信息,而是會致使頁面莫名其妙地加載或者乾脆「消失」。
解決這個問題的方法天然也很簡單:徹底模擬你要加載的頁面(精確到每個參數,每個符號),而後在調試環境下獨立打開,看看會不會出現一些致命的錯誤,若是沒有,就人工檢查一下。錯誤天然會出現。而後根據錯誤去修復便可。url

若是你的狀況相似於這個案例,移步:http://blog.csdn.net/pluschang/article/details/78425523.net

相關文章
相關標籤/搜索