项目场景:
最近在写一个小项目,写到一定程度后想设置404,500等自定义的页面,但要使用自己的页面,就得Debug=False,在这里遇到了一些问题,记录下
问题描述:
问题1,static文件访问有问题
提示:这里描述项目中遇到的问题:
关闭debug模式时,static有大部分的css和image文件无法访问:

问题2,自定义404和500无法被访问
自定义的404和500都放在这个文件夹,但是

#在urls.py中,相应的方法也写好
handler404 = lfh.views_login.page_not_found
handler500 = lfh.views_login.page_error

最后得到的是:

解决方案:
问题 1的原因,部署服务器时内部的文件是无法被访问的,出来定义好的media和static这种静态文件夹之外,刚开始设置static时就写了一句话,并没有像写meida那样,在urls.py中写好相应的访问路径和权限
setting.py中:
STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 静态文件存放位置
]
# 配置media路径,保存用户文件
MEDIA_ROOT = (os.path.join(BASE_DIR, "media"))
MEDIA_URL = '/media/'
urls.py:
from django.conf import settings
from django.conf.urls import url, static
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('lfh.urls')),
url(r'^static/(?P<path>.*)$', static.serve,
{'document_root': settings.STATIC_ROOT}, name='static'),
# 注册媒体文件
re_path(r'media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
]
这样绑定后,Debug=True能访问的static,在部署后也可以访问了
至于问题2,主要原因,在看了很多博客后总结了一下:看似有很多种调用的方法, 不管写法如何骚气,最终还是有一点,必须在templates文件夹根目录下创建,连名字都得是404.html之类的

而errors里的。。。真的无力回天了,而且自己写好的方法也毫无用处,只要把网页名字改好就可以访问了
即使把这些玩意注释了也没关系,因为在发生404时,templates底层会默认去templates文件夹根目录去找相应的html是否存在,如果存在就使用自定义的404页面和500页面

版权声明:本文为wangaolong0427原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。