django get_object_or_404

el/2024/7/17 18:57:54

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

get_object_or_404的介绍: 我们原来调用django 的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 模块包里面的其他的方法, 会让你能够在提高编程的效率。


http://www.ngui.cc/el/5557140.html

相关文章

sql语句每个关键字的执行顺序

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。 每个步骤都会产…

Linux下进程在后台可靠运行(nohup/)和前后台运行程序切换

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口、网络断开连接的干扰呢? 下面举了一些例子&…

Java线程池(newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool 、newSingleThreadExector )

1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() {Overridepublic void run() {// TODO Auto-generated method stub}} ).start(); 那你就out太多了,new Thread的弊端如下: a. 每次new Thread新建…

linux如何设置无密码登录mysql(如何设置无密码登陆mysql)

Linux下每次用mysql连接连接服务器,常常用如下方式: [rootlocalhost ~]# mysql ( -hlocalhost ) -uroot -proot 每次都输入用户名,密码,多折腾人啊,有没有更方便的方式? 我们只需要简单地配置下my.cnf文件…

Django model字段类型详解

Django 通过 models 实现数据库的创建、修改、删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;…

django的request、session没有获取到值,赋默认值

接受request的数据 从post中取得数据,如果不存在则默认值为1 pageNumber request.POST.get(pageNumber,1) 从get中取得数据,如果不存在则默认值为1 pageNumber request.GET.get(pageNumber,1) 从所有请求中取得数据,如果不存在则默认值为1 …

你知道 Linux 内核是如何构建的吗?

介绍 我不会告诉你怎么在自己的电脑上去构建、安装一个定制化的 Linux 内核,这样的资料太多了,它们会对你有帮助。本文会告诉你当你在内核源码路径里敲下make 时会发生什么。 当我刚刚开始学习内核代码时,Makefile 是我打开的第一个文件&…

JS return false 与 return true(解决表单重复提交的问题)

在大多数情况下,为事件处理函数返回false,可以防止默认事件的行为。 例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页。Return False 就相当于终止符&#xff0c;Return True 就相当于执行符。在js中return false的作用一般是用来取消默认动作的。比…

centos6.5下安装django

第一步&#xff1a; 安装pip. 第二步&#xff1a; centos6.5下默认python版本为2.6.x 必须升级python升级过程&#xff1a; 1、下载Python 2.7源码&#xff1a; wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz 下载 2、解压源码包&#xff1a; tar -zxvf…

django Error loading MySQLdb module:No module named MySQLdb

第一步&#xff1a; django链接数据库报错(在命令行运行&#xff1a;manage.py syncdb)&#xff1a; Error loading MySQLdb module:No module named MySQLdb检查setting.py中的DATABASESDATABASES { default: { ENGINE: django.db.backends.mysql, # Add postgres…