首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在不返回404的情况下验证django视图中是否存在对象的正确方法是什么?

在Django视图中验证对象存在的正确方法是使用get_object_or_404()函数。这个函数会尝试获取给定查询参数的对象,如果找不到对象,它会抛出一个Http404异常,从而返回404错误。为了避免返回404错误,你可以在视图中使用try-except语句来捕获Http404异常,并返回其他错误信息。

例如:

代码语言:python
代码运行次数:0
复制
from django.shortcuts import get_object_or_404, render
from .models import MyModel

def view_my_model(request, my_model_id):
    try:
        my_model = get_object_or_404(MyModel, id=my_model_id)
    except Http404:
        # 处理对象不存在的情况,例如返回错误信息
        return render(request, 'my_model_not_found.html')

    # 如果对象存在,继续处理
    # ...

在这个例子中,get_object_or_404()函数尝试获取MyModel模型中idmy_model_id的对象。如果找不到对象,Http404异常会被抛出,然后在except语句中处理这种情况,例如返回一个错误页面。如果对象存在,视图会继续处理请求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django来敲门升级版----认证authenticate

修改用户密码 和常规对象操作一致,查询并且更改用户密码,通过Django内建方法进行操作 from django.contrib.auth.models import User user = User.objects.get...和password进行后台认证操作,如果认证通过情况下返回一个认证通过用户对象,否则返回None from django.contrib.auth import authenticate user...类似于Django后台系统中定义权限访问方式如下: 访问视图中’add’表单处理函数并且尝试添加一个对象情况下,至少需要一个对该对象操作’add’权限才可以 访问视图中’change’处理函数...,并且尝试进行对象数据更新情况下,至少需要一个对该对象操作 ‘change’权限才可以 访问视图中’delete’处理函数并尝试删除一个对象时,至少需要一个该对象’delete’权限才可以 权限设置不仅仅可以指定在类型上...默认情况下,当我们项目中执行数据库操作migrate时,添加在INSTALLED_APPS列表中权限认证模块django.contrib.auth需要数据都会被执行到数据库中,并添加对应默认权限操作

56230

37.Django1.11.6文档

如果对象存在,它就引发一个 Http404异常。...旧算法使用SELECT来判断是否存在需要更新行。 而新算法直接尝试使用UPDATE。 某些少见情况下,一个已存在UPDATE操作对Django不可见。 ...模型实例包含数据情况下模板中对它做处理很少有什么用处。 但是渲染一个未填充表单却非常有意义 —— 我们希望用户去填充它。 所以当我们图中处理模型实例时,我们一般从数据库中获取它。...与浏览器验证兼容自定义小部件中覆盖此方法。 例如,由隐藏textarea元素支持WSYSIWG文本编辑器小部件可能希望始终返回False,以避免隐藏字段上进行浏览器验证。...它检查存储会话中身份验证后端是否存在于AUTHENTICATION_BACKENDS中。

24.3K80

Django 1.10中文文档-第一个应用Part3-视图和模板

我们需要能够将Django指向正确一个,确保这一点最简单方法是通过命名空间。也就是说,将这些模板放在为应用程序本身命名另一个目录中。...{ question }} 快捷方式:get_object_or_404() 一种常见习惯是使用get()并在对象存在时引发Http404。...如果对象存在,它就引发一个 Http404异常。...{{question.question_text}}示例中,首先Django对象问题进行字典查找。如果没有,它尝试一个属性查找 - 在这种情况下工作。如果属性查找失败,它将尝试列表索引查找。...方法调用发生在{% for %}循环中:question.choice_set.all被解释为Python代码question.choice_set.all(),它返回一个由Choice对象组成可迭代对象

2.3K60

django 1.8 官方文档翻译: 1-2-3 编写你第一个Django应用,第3部分

投票功能 – 为一项给定民意调查处理投票选项。 Django 中,网页及其他内容是由视图来展现。而每个视图就是一个简单 Python 函数(或方法, 对于基于类视图情况下)。...图中添加些实际功能 每个视图只负责以下两件事中一件:返回一个 HttpResponse 对象,其中包含了所请求页面的内容, 或者抛出一个异常,例如 Http404 。剩下就由你来实现了。...快捷方式: get_object_or_404() 这很常见,当你使用 get() 获取对象对象却不存在时就会抛出 Http404 异常。对此 Django 提供了一个快捷操作。...若对象存在时就抛出 Http404 异常。...若返回是空列表将抛出 Http404 异常。 编写一个 404 ( 页面未找到 ) 视图 当你图中抛出 Http404 时,Django 将载入一个特定视图来处理 404 错误。

1.8K50

Django中与时区相关安全问题

这也印证了Django文档中说到,不管传入时间对象时区是什么,其内部存储时间均为UTC时区。...流行前后端分离架构中,后端服务器通常只提供JSON格式接口给前端,那么,我们编写下面这样一个view,看看返回是什么: from django.shortcuts import get_object_or...通常情况下我们有两种常见判断方法。一是,用户访问时,直接从model中取出这个对象,然后和now()进行比较: ?...这种情况下,当前时间不管是now()还是localtime()都不影响比较结果,因为两个datetime对象比较时会考虑时差。...那么,发送优惠券时,我们如何筛选网站内会员日是今日所有用户? 下面这个filter是否正确

2.1K20

Django权限系统auth模块详解

提供了用户认证,即验证用户名以及密码是否正确,一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象。...一般注册操作中会用到该方法,实现注册一个用户,用到函数是User.objects.create_user(),新建用户时候需要判断用户是否存在,我实现方式是,User.objects.get(..., 若有效则返回代表该用户user对象, 若无效则返回None...., 该方法验证用户身份: user.set_password(new_password) 通常该方法需要和authenticate配合使用: user = auth.authenticate(username...创建好权限之后,下一步就是各个视图中插入权限控制代码了。permission_required(),参数为当前应用名.codename。

1.6K20

编写 Django 应用单元测试

django 应用单元测试包括: 测试 model,model 方法是否返回了预期数据,对数据库操作是否正确。...测试表单,数据验证逻辑是否符合预期 测试视图,针对特定类型请求,是否返回了预期响应 其它一些辅助方法或者类等 接下来我们就逐一地来测试上述内容。...搭建测试环境 测试写在 tests.py 里(应用创建时就会自动创建这个文件),首先来个冒烟测试,用于验证测试功能是否正常, blog\tests.py 文件写入如下代码: from django.test...分类视图,访问它将返回某个分类下文章列表。如果访问分类不存在返回 404 响应。 归档视图,访问它将返回某个月份下全部文章列表。...首页视图、标签视图、分类视图、归档视图都是同一类型视图,他们预期行为应该是: 返回正确响应码,成功返回200,不存在返回404。 没有文章时正确地提示暂无文章。

74630

关于“Python”核心知识点整理大全64

404错误通常意味着你Django代码是正确 ,但请求对象存在。500错误通常意味着你编写代码有问题,如views.py中函数有问题。...当前,在这两种情况下Django返回通用错误页面,但我们可以编写外观与“学习笔记”一 致404和500错误页面模板。这些模板必须放在根模板目录中。 1....本地查看错误页面 将项目推送到Heroku之前,如果你要在本地查看错误页面是什么,首先需要在本地设 置中设置Debug=False,以禁止显示默认Django调试页面。...使用方法get_object_or_404() 现在,如果用户手工请求不存在主题或条目,将导致500错误。Django尝试渲染请求页 面,但没有足够信息来完成这项任务,进而引发500错误。...对于这种情形,将其视为404错误更 合适,为此可使用Django快捷函数get_object_or_404()。这个函数尝试从数据库获取请求对象, 如果这个对象存在,就引发404异常。

8610

Django 3.1 官网学习路线

如果“Date published”值与教程 1 中创建问题时时间匹配,这可能意味着您忘记为 TIME_ZONE 设置正确值。更改它,重新加载页面并检查正确值出现。...编写实际应用视图 每个视图负责做两件事中一件:返回一个包含被请求页面内容 HttpResponse 对象,或者引发一个异常,比如 Http404。剩下就看你了。...:如果请求 ID 不存在问题,视图就会抛出 Http404 异常。...默认情况下,为 3 个选项提供足够字段。” 加载“添加问题”页面,看看是什么样子: 不过有一个小问题。它需要大量屏幕空间来显示用于输入相关选择对象所有字段。...这是它现在样子: 默认情况下Django 显示每个对象 str()。但有时如果我们能显示单独字段会更有帮助。

8.2K10

Django】 开发:补充知识

Paginator对象 负责分页数据整体管理 对象构造方法 参数 需要分类数据对象列表 每页数据个数 返回值: Paginator对象 Paginator属性...负责具体某一页数据管理 创建对象 Paginator 对象 page () 方法返回 Page 对象 page = paginator.page(页码) Page 对象属性 object_list...:当前页上所有数据对象列表 number:当前页序号,从 1 开始 paginator:当前 page 对象相关 Paginator 对象 Page 对象方法 has_next ():如果有下一页返回...,如果下一页不存在,抛出 InvalidPage 异常 previous_page_number ():返回上一页页码,如果上一页不存在,抛出 InvalidPage 异常 len ():返回当前页面对象个数...( ): raise Http404 # 直接返回404 邮件告警 报错邮件中会显示一些错误追踪,这些错误追踪中会出现如 password等敏感信息,Django已经将配置文件中敏感信息

6.4K30

django 1.8 官方文档翻译:13-1-2 使用Django认证系统

Django认证框架中只存在一种类型用户,因此诸如'superusers'或管理员'staff'用户只是具有特殊属性集user对象,而不是不同类型user对象。...给已验证登录用户添加访问限制 基于特定权限和其他方式来限制访问,你最好按照前面所叙述那样操做。 简单方法就是图中直接运行你对request.user测试。...startproject生成,它会被包含进来。 Django 2.0中,会话验证会变成强制性, 无论是否开启了SessionAuthenticationMiddleware 。...如果你AUTH_USER_MODEL继承自AbstractBaseUser,或者实现了它自己get_session_auth_hash()方法验证会话会包含这个函数返回哈希值。...该表单必须在它__init__方法中接收一个request关键字参数,并提供一个get_user方法,此方法返回认证过用户对象(这个方法永远只表单验证成功后调用)。

4.6K20

Django 视图层

解释图中标识处 1.选择一个本地空目录,该目录就作为python虚拟环境目录. 2,选择本地python解释器安装路径 3.勾选该选项则可以使用base interpreter中第三方库,选将和外界完全隔离...响应可以是一张网页HTML内容,一个重定向,404错误等如何东西,但是,无论视图本身是个什么处理逻辑,最好都返回某种响应。...这个视图会返回一个HttpResponse对象,其中包含生成响应,每个视图函数都负责返回一个HttpResponse对象 三.HttpRequest对象 request属性 django将请求报文中请求行..., 注意,FILES只有在请求方法为POST且提交带有enctype="multipart/form-data"情况下才会包含数据。...print=true" 2.HttoRequest.is_ajax() 如果请求是通过XMLHttpRequest发起,则返回True.方法是检查HTTP_X_REQUESTED_WITH相应首部是否是字符串

1.7K20

Django Rest Framework-介绍

Django REST framework特性 直观 API web 界面 多种身份认证和权限认证方式支持 内置了 OAuth1 和 OAuth2 支持 内置了限流系统 根据 Django ORM...域名 https://api.example.com 尽量将API部署专用域名(会存在跨域问题) https://example.org/api/ API很简单 版本 URL,如:https://...404 NOT FOUND - [*]:用户发出请求针对是不存在记录,服务器没有进行操作,该操作是幂等。...410 Gone -[GET]:用户请求资源被永久删除,且不会再得到。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。.../resource:返回单个资源对象 POST /collection:返回新生成资源对象 PUT /collection/resource:返回完整资源对象 PATCH /collection/resource

1.8K40
领券