Django學習——全局templates引用的問題

1、問題
在構建網站的時候咱們會用到全局的templates處理錯誤的網頁,此時咱們須要對urls進行一個映射,使得在使用的時候避免重複調用。在使用的時候還會產生錯誤代碼:
第一個是404界面的,第二個是500界面的(Django:2.2.2)html

?: (urls.E007) The custom handler404 view 'index.views.page_not_found' does not take the correct number of arguments (request, exception). ?: (urls.E007) The custom handler500 view 'index.views.page_error' does not take the correct number of arguments (request).

全局視圖django


2、解決
在一個views中關聯html,而後再將views和url創建隱射關係。注意:解決兩個問題的關鍵在於在Django2.2.2下,404的錯誤不能有參數:exception,可是500的錯誤必須有exception,如此解決問題。
1.關聯views
隨便選擇一個app的views添加以下的代碼app

from django.shortcuts import render # 404
def page_error(request): return render(request, 'error404.html', status=404) # 500
def page_not_found(request, exception): return render(request, 'error404.html', status=500)


視圖:
網站

 

2.映射ui

在項目的url中使用handler404handler500這兩個指定的變量來完成數據的映射關係,由於是從index的APP中導入的所以是【from index import views】url

# 設置40四、500錯誤狀態碼
from index import views handler404 = views.page_not_found handler500 = views.page_error

 
視圖:
spa


3.HTML的代碼
其中用{% load staticfiles %}加載全局的資源;用{% static 'images\pk_1.jpg' %}進行資源調用;用href='/music/comment'完成主界面的跳轉debug

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>頁面沒找到</title> {% load staticfiles %} </head>
<body>
<img src="{% static 'images\pk_1.jpg' %}" width="400" height="400">
<br>
<div class="error_main"><a href='/music/comment' class="index">回到首頁</a></div>
</body>
</html>


視圖:
code

 

4.設置
最後將setting中的debug改爲False就能夠觀察到結果了。

3、結果展現
htm

 
4、總結
報錯信息是因爲缺乏參數,有時候圖片加載有問題,分別刷新一下debug的設置,數據就能夠顯示出來。
附上Django的參考文檔:
https://docs.djangoproject.com/en/2.1/ref/settings/#databases

相關文章
相關標籤/搜索