• 117.状态码错误处理


    错误处理

    在一些网站开发中,经常会需要捕获一些错误,然后将这些错误返回比较优美的界面,或者是将这些错误的请求做一些日志保存。

    常见的错误码:

    1.404:服务器没有指定的url。

    2.403:没有权限访问相关的数据。

    3.405:请求的method错误。

    4.400:bad request,请求的参数错误。

    5.500:服务器内部错误,一般是代码出bug。

    6.502:一般是部署的时候见得多,一般是nginx启动了,然后uwsgi有问题。

    自定义错误模板:

    在碰到比如404,500错误的时候,想要返回自己定义的模板,那么可以直接在templates文件夹下创建相应的代码html模板文件。发生相应的错误之后,会将指定的模板返回回去。

    需要注意的是,如果想要自己定义的状态码模板起作用的话,就要在settings.py文件中设置:DEBUG = False(一定要设置DEBUG为False,如果设置DEBUG为True,就不会渲染定义的错误的状态码的文件,只是会返回一个错误:告诉用户哪个地方出错了。)和ALLOWED_HOSTS = ['127.0.0.1'](将DEBUG设置为False之后,就要设置ALLOWED_HOSTS即可以使用哪个ip地址进行访问。)

    错误处理的解决方案:

    对于404和500这种自动抛出的错误。我们可以直接在templates文件夹下新建相应的错误代码的模板文件。而对于其他的错误,我们可以专门定义一个app,用来处理这些错误。
    1. 500的错误:代码中出现bug。示例代码如下:
    from django.http import HttpResponse
    
    
    def index(request):
        a = 2
        b = 0
        c = a/b
        return c
    <!--因为分母不能为0,所以此时就会出现500的错误,即服务器端的diamante出现bug。-->
    
    2. 400的错误:在浏览器中输入一个错误的url,就会出现404错误。
    3.403错误:用户没有权限访问该页面。比如,定义一个用户在访问http://127.0.0.1:3000/页面的时候要传入一个?username=xxx,才能够访问该页面,否者的话,就会返回一个自定义的403.html。示例代码如下:
    # 1. 在项目下新建一个views.py文件,定义一个index视图,
    from django.shortcuts import render, redirect, reverse
    from django.http import HttpResponse
    
    
    def index(request):
        username = request.GET.get('username')
        if username:
            return HttpResponse('success')
        else:
            return redirect(reverse('errors:403'))
            
    # 2. 在urls.py文件中进行视图与url之间的映射,示例代码如下:
    from django.urls import path, include
    urlpatterns = [
        path('errors/', include('errors.urls')),
    ]
    
    # 3. 在errorsAPP下的templates文件中创建403.html,
    # 并且在errors中的views.py文件中定义403的视图函数,示例代码如下:
    from django.shortcuts import render
    
    
    def view_403(request):
        return render(request, 'errors/static/403.html')
    
    # 4.在errors下的urls.py文件中定义视图函数与url之间的映射,示例代码如下:
    from django.urls import path
    from . import views
    
    app_name = 'errors'
    
    urlpatterns = [
        # 可以定义返回错误的页面的url为html
        path('403.html', views.view_403, name='403'),
        path('405.html', views.view_405, name='405'),
    ]
    
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    虚拟机备份的五大常见错误及规避方法
    交换机的link-dependency链路依赖功能
    IntelliJ Idea 常用快捷键列表
    Spark-1.X编译构建及配置安装
    maven快速下载jar镜像
    hive权威指南<一>
    vsftpd安装和使用 Linux系统和window系统
    git安装和使用 linux系统和window系统
    cdh版本的hue安装配置部署以及集成hadoop hbase hive mysql等权威指南
    cdh版本的sqoop安装以及配置
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12306207.html
Copyright © 2020-2023  润新知