django get_object_or_404 是django shortcuts模块里面一个比较简便的方法,特别是用django get来操作数据库的时候,可以帮 我们少写一些代码,加快开发速度。

get_object_or_404的介绍: 我们原来调用django 的get方法(model.object.get()),如果查询的对象不存在的话,会抛出一个DoesNotExist的异常, 现在我们调用django get_object_or_404方法,它会默认的调用django 的get方法, 如果查询的对象不存在的话,会抛出一个Http404的异常,我感觉这样对用户比较友好, 如果用户查询某个产品不存在的话,我们就显示404的页面给用户,比直接显示异常好。

get_object_or_404一般需要3个参数: 
1. modelname:一个model,manage,或query对象。 
2. *args 
3. **kwargs 而后面的*args,**kwargs则是查询的时候用到的参数。

下面用个例子看来下:
from django.shortcuts import get_object_or_404 
product = get_object_or_404(Product, pk=1)

Product是要查询的model,后面的pk=1是查询条件,你可以根据你需要查询的情况来写条件。 上面的例子也可以写成下面这样的形式:

from django.http import Http404

try:
product = Product.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404

看来用django get_object_or_404方法可以省下你很多操作,有兴趣可以看看django.shortcuts 模块包里面的其他的方法, 会让你能够在提高编程的效率。

#####################

用model.object.get()方法查询对象,如果对象不存在的话,会抛出一个DoesNotExist的异常,这样将会使模型层与视图层耦合在一起

Django最重要的一个设计目标就是保持松耦合。 用get_object_or_404可以使模型层和视图层低耦合。

一些可控的耦合将会在django.shortcuts 模块中介绍。

django get_object_or_404的更多相关文章

  1. 10.django的一些方法理解

    django get_object_or_404 get_object_or_404是django的django shortcuts的方法,用来查询数据,或者抛出一个DoesNotExist的异常 用 ...

  2. python 模块学习

    一.from django.contrib.auth.hashers import make_password 通过函数名即可发现,主要有两个函数,分别是创建密码和验证 用法 ps = " ...

  3. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  4. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  5. django用户认证

    利用django自带认证功能实现用户登录认证. views.py # Create your views here. from django.shortcuts import render_to_re ...

  6. 利用django创建一个投票网站(四)

    创建你的第一个 Django 项目, 第四部分 这一篇从第三部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,专注于简单的表单处理并且精简我们的代码. 编写一个简单的表单 让我们更新一下在上一个 ...

  7. 利用django创建一个投票网站(三)

    创建你的第一个 Django 项目, 第三部分 这一篇从第二部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,并且聚焦于如何创建公用界面--也被称为"视图". 设计哲学 Dj ...

  8. Django基础,Day5 - form表单投票详解

    投票URL polls/urls.py: # ex: /polls/5/vote/ url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, ...

  9. Django基础,Day4 - views 详解

    在Django中,网页和其他内容是通过视图传递的.每个视图由一个简单的Python函数表示,Django将通过检查请求的URL(准确地说,是域名后面的部分URL)来选择一个视图. 例如,用户在浏览器中 ...

随机推荐

  1. IDE vscode识别webpack中alias配置路径

    引言网上看到一篇关于 ctrl+鼠标左键无法识别别名路径的问题,最后有人回复的方法只能在ts项目中可以识别 https://segmentfault.com/q/1010000011911879 最后 ...

  2. [SpringBoot系列]--Spring Hibernate search 注解实现(未测试)

    1.maven项目pom.xml加入依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId& ...

  3. PHP代码语法验证插件:SublimeLinter

    1.调出控制台 Ctrl+Shift+P,输入 install package,Enter

  4. mysql的线程处于System lock状态下

    The thread has called mysql_lock_tables() and the thread state has not been updated since. This is a ...

  5. WebStorm 用法集合

    1. 图片宽高提示.&lt;img src="https://pic4.zhimg.com/8345475b687c83a71e0564419b0ac733_b.jpg" ...

  6. 开窗函数over()

    使用方法 如:select name,avg(shengao)from xinxi group by name //我们都知道使用聚合函数要使用分组,如果不分组怎么办 Selct name,avg(s ...

  7. PDF文件比对工具

    tex/PDF对比工具讨论:https://tex.stackexchange.com/questions/65453/track-changes-in-latex 如果有源文件,直接用latexpa ...

  8. 解决javac无效的目标发行版1.8问题

    之前遇到了几次这个问题,解决了又忘记了,所以特别记录一下这个问题. 遇到这个问题,改pom文件不行,改project的sdk也不行,后面看到网上说真正的原因是maven的runner的jre的环境依然 ...

  9. thrift简介

    thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl ...

  10. csharp: using OleDb Getting the identity of the most recently added record

    /// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString&quo ...