1. 程式人生 > 程式設計 >Django 404、500頁面全域性配置知識點詳解

Django 404、500頁面全域性配置知識點詳解

django版本為2.2.7,全域性配置404、500頁面,解決靜態檔案路徑等問題

urls中編寫

urlpatterns = [
 ..............
]
handler404 = 'first.views.page_not_found' #handler404為固定寫法,first.views.page_not_found為404處理函式的位置
handler500 = 'first.views.page_error' #同上

指定的views中

#全域性404
def page_not_found(request,exception):
  from django.shortcuts import render_to_response
  response = render_to_response('first/404.html',{}) #first/404.html html頁面
  response.status_code = 404
  return response

#全域性500
def page_error(exception):
  from django.shortcuts import render_to_response
  response = render_to_response('first/500.html',{})
  response.status_code = 500
  return response

儲存執行 在位址列輸入一個不存在的頁面

Django 404、500頁面全域性配置知識點詳解

會發現並沒有進入我們的配置,這需要我們在settings中進行配置

找到下發這個

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []

修改為

DEBUG = False #關閉debug模式 這時為生產模式,在將專案部署到伺服器時也需要關閉,debug模式會暴露站點的多種資訊
ALLOWED_HOSTS = ['*'] # * 為所有都可訪問,部署伺服器時需修改

儲存後執行

Django 404、500頁面全域性配置知識點詳解

進入了配置,但按下F12發現所有的靜態檔案如css、js、圖片等都沒找到,都是404

再進入settings檔案,因為我們開啟了生產模式所以Django不再代理靜態檔案,可以通過配置來再次代理

找到我們曾經寫的media及static配置

MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR,"media")
STATIC_URL = '/static/'
STATICFILES_DIRS =[
  os.path.join(BASE_DIR,'static'),]
將
STATICFILES_DIRS =[
  os.path.join(BASE_DIR,] 註釋
增加
STATIC_ROOT = os.path.join(BASE_DIR,'static')
儲存後在URLS中新增
from django.urls import path,re_path
from tlmzp.settings import MEDIA_ROOT,STATIC_ROOT
from django.views.static import serve
urlpatterns = [
  ..................
  re_path(r'^media/(?P<path>.*)$',serve,{'document_root': MEDIA_ROOT}),#media檔案
  re_path(r'^static/(?P<path>.*)$',{'document_root': STATIC_ROOT}),#static檔案
]

儲存後重新整理頁面

Django 404、500頁面全域性配置知識點詳解

所有的靜態檔案就都載入了

到此這篇關於Django 404、500頁面全域性配置知識點詳解的文章就介紹到這了,更多相關Django 404、500頁面全域性配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!