django的403/404/500错误自定义页面的配置方式

要实现标题的功能,总共分四步:

1.创建html错误页

2.配置settings

3.编写视图

4.配置url

我的开发环境:

django1.10.3

python2.7.12

前期工作

创建项目及app

$ django-admin.py startproject Test
...
$ python manage.py startapp myapp
...

1.创建html错误页

在Test目录下,创建templates文件夹

在文件夹下创建404.html/403.html/500.html文件

2.配置settings

配置tamplates文件路径、关闭Debug、配置allowrd_hosts

DEBUG = False # 关闭Debug
...
TEMPLATES = [
  {
    ...
    'DIRS': ['templates/'], # 配置tamplates文件路径
    ...
  },
]
...
ALLOWED_HOSTS = [
  '192.168.1.12', # 配置allowrd_hosts
]

3.编写视图

在myapp下编写views.py

from django.shortcuts import render

def page_not_found(request):
  return render(request, '404.html')

def page_error(request):
  return render(request, '500.html')

def permission_denied(request):
  return render(request, '403.html')

4.配置url

...
from myapp.views import *

handler403 = permission_denied
handler404 = page_not_found
handler500 = page_error
...

ok!运行一下,看看结果!

补充知识:Django 漂亮的出错页面

例子展示 Django 的出错页面。 我们来花些时间看一看这个出错页,了解一下其中 给出了哪些信息。

以下是值得注意的一些要点:

在页面顶部,你可以得到关键的异常信息: 异常数据类型、异常的参数 (如本例中的 "unsupported type" )、在哪个文件中引发了异常、出错的行号等等。

在关键异常信息下方,该页面显示了对该异常的完整 Python 追踪信息。 这类似于你在 Python 命令行解释器中获得的追溯信息,只不过后者更具交互性。 对栈中的每一帧,Django 均显示了其文件名、函数或方法名、行号及该行源代码。

点击该行代码 (以深灰色显示),你可以看到出错行的前后几行,从而得知相关上下文情况。

点击栈中的任何一帧的“Local vars”可以看到一个所有局部变量的列表,以及在出错 那一帧时它们的值。 这些调试信息相当有用。

注意"Traceback"下面的"Switch to copy-and-paste view"文字。 点击这些字,追溯会 切换另一个视图,它让你很容易地复制和粘贴这些内容。 当你想同其他人分享这些异常 追溯以获得技术支持时(比如在 Django 的 IRC 聊天室或邮件列表中),可以使用它。

你按一下下面的"Share this traceback on a public Web site"按钮,它将会完成这项工作。 点击它以传回追溯信息至http://www.dpaste.com/,在那里你可以得到一个单独的URL并与其他人分享你的追溯信息。

接下来的”Request information”部分包含了有关产生错误的 Web 请求的大量信息: GET 和 POST、cookie 值、元数据(象 CGI 头)。

Request信息的下面,“Settings”列出了 Django 使用的具体配置信息。

Django 的出错页某些情况下有能力显示更多的信息,比如模板语法错误。

以上这篇django的403/404/500错误自定义页面的配置方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Django静态资源部署404问题解决方案

    解决方法: 1.首先你需要在自己的app下面创建2个目录 static 和 templates static下存放静态文件,templates下存放网页模板文件 2.修改setting.py 找到 STATIC_ROOT = ... 在后面追加一行,然后保存 3.html引入js 4.前端验证 5.后台验证 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.

  • django queryset 去重 .distinct()说明

    我就废话不多说了,大家还是直接看代码吧! contacts = ExternalContacts.objects.filter(MobileKey=mobile_obj) house = House.objects.none() for contact in contacts: house = house | contact.house_set.all() return house.distinct() 合并出来的queryset,再去重. 补充知识:Python--深入理解urllib.url

  • django 解决自定义序列化返回处理数据为null的问题

    在接口返回数据时,如果数据库表中查询出来的某些字段为null时,在前端需要多处理一些数据异常的情况. django可以自定义序列化返回处理,将返回的内容限制和预处理再返回到前端. 1.未处理时返回 如图上,有email.mobile这两个字段是有可以为空且默认值为null的. 2.to_representation处理 在模型序列化类增加, to_representation方法,以自定义数据处理限制 from rest_framework import serializers from .mo

  • django的403/404/500错误自定义页面的配置方式

    要实现标题的功能,总共分四步: 1.创建html错误页 2.配置settings 3.编写视图 4.配置url 我的开发环境: django1.10.3 python2.7.12 前期工作 创建项目及app $ django-admin.py startproject Test ... $ python manage.py startapp myapp ... 1.创建html错误页 在Test目录下,创建templates文件夹 在文件夹下创建404.html/403.html/500.htm

  • springboot 自定义404、500错误提示页面的实现

    目录 springboot 默认的异常处理机制 使用模板引擎 使用示例 没有使用模板引擎 springboot 默认的异常处理机制 springboot 默认已经提供了一套处理异常的机制.一旦程序中出现了异常 springboot 会向 /error 的 url 发送请求.在 springboot 中提供了一个名为 BasicErrorController 的类来处理 /error 请求,然后跳转到默认显示异常的页面来展示异常信息 使用模板引擎 在使用 thymeleaf 等模板引擎时,spri

  • Django自定义全局403、404、500错误页面的示例代码

    自定义模板 403 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>403-禁止访问</title> </head> <body> HTTP 403 - 禁止访问 </body> </html> 404 <!DOCTYPE html> <h

  • Django 自定义404 500等错误页面的实现

    在开发网站的过程中,404,500错误,是不可避免产生的. 一旦产生了这种错误,很多可以通过web server 来处理.比如使用 apache 的定义 或者nginx 的定义.都可以定向处理.如果单纯在django里面可以处理吗?肯定是可以的,django提供了相应的处理方式,只要在django里 起步 面定义了,无论你今后部署在apache下或者是nginx下,都是生效的. 要想自定义错误页面,需要关闭调试模式 DEBUG = False ,因为调试模式的错误页面是开发下会显示错误信息的.

  • python django 访问静态文件出现404或500错误

    django static文件夹下面的内容方法不了 出现404 500错误 需要查看自己的settings文件确保有一下内容 import os PROJECT_ROOT = os.path.dirname(__file__) DEBUG = True STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), ) STATICFILES_FINDERS = ( 'django.contri

  • Laravel5.1自定义500错误页面示例

    本文实例讲述了Laravel5.1自定义500错误页面的方法.分享给大家供大家参考,具体如下: Laravel 5.1中500错误是程序错误,程序错误一定是系统自带的500错误,可以通过以下步骤简单实现自定义500错误页面. 编辑PHP文件app/Exceptions/Handler.php内容如下: public function render($request, Exception $e) { if ($e instanceof ModelNotFoundException) { $e =

  • 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

  • 在Python的Django框架中编写错误提示页面

    你应该在生产环境中把TEMPLATE_DEBUGFalse 如果这个设为`` True`` ,为了在那个好看的错误页面上显示足够的东西,Django的模版系统就会为每一个模版保存一些额外的信息. 实现一个404模板 如果`` DEBUG`` 设置为`` True`` ,Django会显示那个自带的404错误页面. 但如果`` DEBUG`` 被设置成`` False`` ,那它的行为就不一样了: 他会显示一个在你的模版根目录中名字叫`` 404.html`` 的模版 所以,当你准备部署你的应用时

  • 基于spring-security 401 403错误自定义处理方案

    spring-security 401 403错误自定义处理 为了返回给前端统一的数据格式, 一般所有的数据都会以类似下面的方式返回: public class APIResultDto<T> { /** * 状态码:-1代表成功,具体参考APIErrorCode类 */ private int er; /** * 状态描述,可以自行设置或使用APIErrorCode类中默认描述 */ private String erMessage; /** * 实际返回实体,isSuccess()返回tr

  • 解决RestTemplate 请求接收自定义400+ 或500+错误

    目录 RestTemplate 请求接收自定义400+ 或500+错误 场景 原因 解决办法 自定义RestTemplate的ResponseErrorHandler Spring框架中的RestTemplate处理ClientHttpResponse的方式 并不想让它抛异常 无法使用IOC注入的场景下 RestTemplate 请求接收自定义400+ 或500+错误 场景 当服务端自定义400错误返回体时,使用restTemplate 请求接收不到消息体.而我正想根据不同的错误信息做不同的操作

随机推荐