Django的内置错误视图

Django的内置错误视图

每当人们试图访问一个网站上不存在的链接时,就会出现404错误,即找不到这个页面。同样的,还有更多的错误代码,如500、403等。Django有一些默认函数来处理HTTP错误。让我们逐一来探讨一下。

Django中的内置错误视图

404视图(未找到页面)

通常情况下,当请求的URL在服务器上不可用时,这个视图会被用来渲染基本的404模板。这种情况发生时,Django默认会引发django.views.defaults.page_not_found()视图并渲染默认的404错误模板。你可以通过在templates文件夹中添加自定义404.html页面来定制它。

Django的内置错误视图

**500视图(服务器错误) **

当服务器崩溃或没有任何反应时,这个视图就会被使用。在这种情况下,Django有默认函数django.views.defaults.server_error()来渲染这个视图的服务器错误。你也可以通过在templates文件夹中添加你的500.html页面来定制它。

Django的内置错误视图

403视图(禁止)

当用户没有权限查看特定页面,但他/她要求查看该页面。在这种情况下,403视图就会发挥作用。它说这个页面是被禁止的,不会向该用户显示该页面。为此,Django有django.views.defaults.permission_denied()函数来呈现禁止的模板。它可以维护你的隐私,只有被允许的用户才能访问某些页面。你也可以通过在templates文件夹中添加你的403.html页面来定制它。

假设你有一个电子商务网站,你只想让经过认证的商户列出产品。买家和普通用户不能列出他们的产品。你可以像这样在Django中添加这个功能。

from django.core.exceptions import PermissionDenied

def upload(request, pk):
    if not request.user.is_merchant:
        raise PermissionDenied


    # your code here.....



Django的内置错误视图

400视图(错误请求)

当有人试图访问你网站的机密页面时,Django会使用400视图或坏请求视图,这可能导致你的网站被黑客攻击或泄露机密数据。因此,你不希望任何人访问该页面。Django有django.views.defaults.bad_request(),可以对任何形式的可疑操作提出400个视图。这可以防止你的网站被Bad peoples攻击。

Django的内置错误视图

在Django中定制内置的错误视图

现在,让我们看看如何定制这些错误视图。首先,你需要进入settings.py并设置Debug=False。

DEBUG = False
ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

在项目中建立文件夹,并给它命名,这里我给这个文件夹命名为 “templates”。现在进入settings.py并设置templates目录。

TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')

现在,在模板目录内你可以创建html文件’404.html’、’500.html’、’403.html’、’400.html’等。在创建这些页面后,展示你的HTML技能,并自己定制页面。在settings.py中添加你的应用程序名称。

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'jquery',
**'geeks'**
]

在urls.py中添加处理方法

handler404 = 'myappname.views.error_404'
handler500 = 'myappname.views.error_500'
handler403 = 'myappname.views.error_403'
handler400 = 'myappname.views.error_400'

现在在views.py中设置逻辑来显示这些页面

from django.shortcuts import render

def error_404(request, exception):

        return render(request,'404.html')

def error_500(request,  exception):
        return render(request,'500.html', data)

def error_403(request, exception):

        return render(request,'403.html')

def error_400(request,  exception):
        return render(request,'400.html', data)    

现在,你都准备好了,可以运行服务器,看到你做的这些错误处理页面。

要运行服务器:python manage.py runserver

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程