Django3.0.3自定义错误界面报错handler404,handler500&静态文件加载_yanyanforest的博客-程序员宅基地

技术标签: python  

自定义404,500 报错

错误如下所示

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

解决方法:

  1. 设置settings.py中 DEBUG = False 否则 不生效
  2. 在urls.py(总项目中,也可以设置在app的urls.py) 设置好对应的方法
```python
handler404 = views.page_not_found_error
handler500 = views.page_error
```
  1. 在 views.py中写上以上的方法

    def page_not_found_error(request,exception):
        return render(request, 'standard/error404.html',context={
          'error':'访问有误:页面不存在'}, status=404)
    
    def page_error(request):
        return render(request, 'standard/error404.html',context={
          'error':'访问有误:服务器错误'}, status=500)
    

那么,问题来了,这样设置后,静态文件就无法加载了, 导致静态文件都是 404 的情况。主要原因是应为关闭DEBUG模式后,Django 便不提供静态文件服务了。
方法总比困难多。
解决方法:

  1. 法1:runserver 的启动方式

如果运行是通过 runserver 命令的方式,那简单,在启动 runserver 指令后追加 --insecure 选项能参数强制 django 处理静态文件。

python manage.py runserver --insecure

  1. 法2 设置:
  • setting 中设置:
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), '\static')

  • urls.py 中加上如下代码:

from django.views.static import serve as static_serve  # 注意这里引入的与上面的不同
from django.urls import re_path

urlpatterns = [
...
re_path(r'^static/(?P<path>.*)$' , static_serve, { 'document_root' : settings.STATIC_ROOT}),
]

或者

from  django.views import static
from django.conf.urls import url
from django.conf import settings
urlpatterns = [
...
    url(r'^static/(?P<path>.*)$',static.serve,{'document_root':settings.STATIC_ROOT},name='static')
    ]

可以参考官方链接:https://docs.djangoproject.com/en/3.0/howto/static-files/deployment/

Over!! 如有疑问,留言

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yanyanforest/article/details/105699924

智能推荐

BPM配置故事之案例13-触发消息通知_一面开发一面流程的博客-程序员宅基地

老李:小明!小明:……见你就没好事,又要我干嘛?老李:额,小事小事,最近很多部门都觉得Boss的审批速度太慢了,能不能以后给审批人一个消息提醒?小明:……有一种不太好的预感老李:怎么,很困难么?小明:那倒不是,设置一下提醒就是了……时间设置成多少?老李:1个小时吧 审批许可时间及超时提醒属性 系统配置中的消息提醒配置

Ubuntu下Ceres和Eigen3.3冲突的解决_ceresconfig.cmake eigen3_christinayo的博客-程序员宅基地

在随高博的《SLAM十四讲》学习时,安装ceres遇到了一些问题,在此记录下来以供参考。1.高博的源码中自带了一个ceres版本。但是在编译中遇到了问题:Could not find a package configuration file provided by "Ceres" with any of the following names: CeresConfig.cmak..._ceresconfig.cmake eigen3

使用DB2时发生该错误: SQLCODE=-668 不能向用EDITPROC定义的表中添加列_haha_lee的博客-程序员宅基地

使用DB2时发生该错误: SQLCODE=-668 不能向用EDITPROC定义的表中添加列本人用的是dbvisual 客户端:

Lemur简明教程_lemuroid 源码_MemRay的博客-程序员宅基地

课程作业需要做一个评测实验,借机会了解一下Lemur,其实使用教程在Lemur官网(http://www.lemurproject.org/)和SourceForge(http://sourceforge.net/projects/lemur/wiki/)上都有较为详细的讲解,不过后者的文档是从原来的Lemur资料库转移过去的,很多内容不全,建议多查看Indri目录里的doc。中文教程不多,毛进师_lemuroid 源码

机器学习路线图(附资料)_guohecang的博客-程序员宅基地

也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸;也自然而然点开今日头条推给你的新闻;也习惯逛淘宝点了找相似之后货比三家;亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈。恩,这些功能的核心算法就是机器学习领域的内容。

随便推点

笔记本降温小技巧_gogiqp_jyh的博客-程序员宅基地

一. 给笔记本加散热底座   在夏天,大家使用笔记本的环境温度高,笔记本内部温度也会升高,尤其是大家在用笔记本玩游戏的时候,可以让笔记本的CPU温度升高到了75℃警戒线以上,时间久了会死机,重启,严重影响笔记本硬件的寿命,给笔记本电脑增加一个散热底座是最有效、简便的散热解决方案。笔记本电脑散热底座的基本原理是在笔记本底部设置高转速风扇,而散热底座的材质通常是热传导性良好的金属,通过空气流通和巨大

Linux vm运行参数之(一):overcommit相关的参数_vm_commit_limit-程序员宅基地

一、什么是overcommit要了解这类参数首先要理解什么是committed virtual memory?使用版本管理工具的工程师都熟悉commit的含义,就是向代码仓库提交自己更新的意思,对于这个场景,实际上就是各个进程提交自己的虚拟地址空间的请求。虽然我们总是宣称每个进程都有自己独立的地址空间,但是,这些地址空间都是虚拟地址,就像是镜中花,水中月。当进程需要内存时(例如通过brk分配内存),进程从内核获得的仅仅是一段虚拟地址的使用权,而不是实际的物理地址,进程并没有获得物理内存。实际的物理内存只_vm_commit_limit

Tomcat并发性能调优问题_nessofblade的博客-程序员宅基地

本人近来在做一个项目,是给一个大企业做一个电话系统,数据量和访问量都比较大。 系统后台由一个C服务程序记录电话记录,前台使用JAVA提供WEB查询与统计电话记录功能。 核心数据表每天产生大约4万条记录,会使用此系统的大概有3000多企业员工,上班时间目前大约有600人左右在线,在高峰时段并发请求数在40 -50左右。(日后系统在企业内进一步推广后同时在线人数和并发数会更高)系统运行到现在4个多月

C语言-数据的输入(贺老师)_c语言数据输入_这是一只猿儿的博客-程序员宅基地

数据的输入一,用scanf输入scanf的功能:从标准输入(一般是键盘)获得数据scanf(格式描述串,变量地址);格式控制符:%d,%i:用来输入整型(int)数据,长整型ld,短整型hd。%o:输入八进制整数,%lo,%ho%x:用来输入十六进制的整数,lx,hx;%u:用来输入无符号整型的十进制数,lu…%c:用来输入单个字符。%f:用来输入浮点数,用小数形式或指数形式输入二,输入形式的分割三,不同类型的数据的自然分割四,输入的数据暂放在缓冲区五,指定宽度的输入细节_c语言数据输入

BDC返回消息的处理_早日当富农的博客-程序员宅基地

BDC程序运行后的消息内表里面只有消息代码和类型,读取起来很不直观。有一个标准函数可以把文本展示出来而不用单个逐行处理了,非常方便。 CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2' TABLES imt_bdcmsgcoll = gt_msg ext_return = lt_bapireturn.

PostgreSQL DBA(63) - Extension(pg_stat_statements)_cuichao1900的博客-程序员宅基地

pg_stat_statements提供了一种跟踪所有SQL语句的手段。进入pg_stat_statements目录,执行make...

推荐文章

热门文章

相关标签