美文网首页Python圈Python基础
Django基础6--抛出404异常

Django基础6--抛出404异常

作者: 伊洛的小屋 | 来源:发表于2020-08-28 21:41 被阅读0次
1.抛出404错误
  • 当内容不存在时,需要返回404
  • 回到views.py,改写project_list
from django.http import HttpResponse, Http404
from django.shortcuts import render

from .models import ProjectInfo

# Create your views here.


def home(request):
    project_list = ProjectInfo.objects.order_by('add_data')[:5]
    context = {'project_list': project_list}
    return render(request, 'autoapi/home.html', context)


def project_list(request, project_id):
    try:
        project = ProjectInfo.objects.get(pk=project_id)
        context = {'project': project}
    except ProjectInfo.DoesNotExist:
        raise Http404('project list dose not exist')
    return render(request, 'autoapi/project.html', context)


def register(request):
    return HttpResponse('You\'re looking at the register page')

  • 回到url.py 改写一下, project_list
from django.urls import path
from . import views


urlpatterns = [
    path('home/', views.home, name='index'),
    path('<int:project_id>/', views.project_list, name='project list'),
    path('register/', views.register, name='register'),
]

  • 在/AutoPlatform/autoapi/templates下新建一个project.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AutoPlarform Home</title>
</head>
<body>
{{ project }}
</body>
</html>
  • 来先看下全面的列表


  • 数据中只有4个列表,那么如果输入id 为5的话,按照上面的代码逻辑应该就会抛出404异常的错误了
  • 来先看看id = 1


  • 再看看id = 4


  • 边界值都看过了,那么现在我们来输入一个不存在数据的id,测试一下是否会抛出404的异常


  • 抛出了project list dose not exist的异常
2.快捷函数: get_object_or_404()

Django还提供了一个快捷的函数来实现上面的功能

  • 现在来再改写一个views.py
# 作者:伊洛Yiluo 公众号:伊洛的小屋
# 个人主页:https://yiluotalk.com/
# 博客园:https://www.cnblogs.com/yiluotalk/
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render

from .models import ProjectInfo

# Create your views here.


def home(request):
    project_list = ProjectInfo.objects.order_by('add_data')[:5]
    context = {'project_list': project_list}
    return render(request, 'autoapi/home.html', context)


def project_list(request, project_id):
    project = get_object_or_404(ProjectInfo, pk=project_id)
    context = {'project': project}
    return render(request, 'autoapi/project.html', context)


def register(request):
    return HttpResponse('You\'re looking at the register page')

  • 打开一个存在的id


  • 打开一个不存在的id


  • 这样就简化了一开始的过程,看上去更加的简洁,而且会降低模型层和视图层的耦合性

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
愿你享受每一天,Just Enjoy !

相关文章

  • Django基础6--抛出404异常

    1.抛出404错误 当内容不存在时,需要返回404 回到views.py,改写project_list 回到url...

  • Django手动抛出异常

    使用raise RuntimeError('CountSizeError')可以手动抛出一个RuntimeErro...

  • ES使用中遇到的多种坑,以及解决方案

    1.查询不到导致404报错 在使用get或者search进行查询获取文档的时候,如果没有结果会抛出404的异常。 ...

  • Angular 项目配置代理与跨域相关

    调试 Angular 新项目的时候配置好 proxy-config 后启动发起接口请求但依然抛出了 404 的异常...

  • 异常抛出

    本章主要内容 用try语句捕获异常 常见异常处理 用raise 和assert抛出异常 自定义异常 常用异常名 总...

  • 抛出异常

    在方法执行的时候,遇到不匹配的地方,加入异常抛出机制,可以清晰的知道异常点,并很好的解决。 throw new E...

  • 抛出异常

  • 抛出异常

    MSSQL 在存储过程中进程会处理一些逻辑性的错误,如:将RMB转换为USD时,没有查询到想要的汇率 这个时候最好...

  • 异常抛出

    异常抛出之 Throw 抛出一个已知异常 打印效果: 从打印结果来看,一旦发生异常后面的逻辑就不会执行了。 Cat...

  • java基础知识精华总结(二)

    1.异常类 JAVA中除了RunTimeException 类,其他异常均须捕获或抛出。 以上就是 java 基础...

网友评论

    本文标题:Django基础6--抛出404异常

    本文链接:https://www.haomeiwen.com/subject/ljfcsktx.html