关键词

详解Django的 get() 函数:处理 GET 请求

Django中get()函数的作用与使用方法攻略

在Django中,get()是一个非常常用的函数,它用于从数据库中获取对象并返回。get()可以用于任何继承自Model的模型应用。下面将详细介绍get()的使用方法及其相关注意事项。

语法

get(**kwargs)

参数

get()函数接收一个或多个关键字参数,其中关键字参数名对应对象的属性名,关键字参数值对应属性值。如果没有匹配的项或有多个匹配的项则抛出异常。

返回值

get()返回根据指定参数检索到的单个对象实例。如果没有检索到对象,则引发 DoesNotExist 异常(但是如果在kwargs中任意参数指定 force_create=True ,则创建并返回新对象)。如果查询到的匹配项是多个,则会引发 MultipleObjectsReturned 异常。

示例

例 1

from django.shortcuts import get_object_or_404
from myapp.models import Article

def article_detail(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    return render(request, 'myapp/article_detail.html', {'article': article})

上述示例首先导入了 get_object_or_404 函数,该函数如果在指定模型中没有找到任何匹配项则引发 Http404 异常。然后调用get_object_or_404()函数,在模型Article中从主键为个文章ID的记录中筛选出一条记录放入变量 article 中并将其传递给模板。如果找不到对应的文章,则引发 Http404 异常。

例 2

假设我们有一个至少包含 id , titlebody 字段的博客文章模型 Blog。使用get()函数获取主键为1的博客文章。

from myapp.models import Blog

try:
    blog = Blog.objects.get(id=1)
except Blog.DoesNotExist:
    blog = None

上述代码尝试从数据库中获取主键为1的Blog对象。如果没有找到,则将 blog 变量设置为 None

注意事项

  • 如果查询到多个匹配项,则 get() 函数将引发 MultipleObjectsReturned 异常。如果所有参数都不适用于任何对象,则引发 DoesNotExist 异常。
  • get()函数不适用于具有复合主键的模型,因为每个对象只能由唯一的主键来区分。对于这种情况,可以使用filter(),然后对返回的结果进行处理。
  • kwargs参数可以使用任何模型字段的名称。另外,模型的另外一个关系名称也可以被使用。通过使用两个下划线__连接模型和相关模型可以实现使用其他关系名称的筛选查询。

以上是Django中get()函数的完整攻略及其使用方法,希望能对你有所帮助。

本文链接:http://task.lmcjl.com/news/16215.html

展开阅读全文
上一篇:Matplotlib直方图 下一篇:C#基本语法