Django便捷函数shortcuts

一、Django便捷函数

1、介绍

  • django.shortcuts 收集助手函数和“跨”多级mvc的类,换句话说,为了方便起见,这些函数/类引入受控耦合。
from django.shortcuts import render, HttpResponse,redirect,reverse,resolve_url

2、官方链接

二、render()

这个函数用于渲染模板并返回对象。它接收请求对象、模板名、上下文数据等参数,并返回一个响应对象。通常用于渲染 HTML 模板。

render(request, template_name, context=None, content_type=None, status=None, using=None)

1、参数

  • request:请求对象。
  • template_name:要渲染的模板名称。
  • context:包含要传递给模板的数据的字典。
  • content_type:响应的内容类型。
  • status:响应的状态码。
  • using:用于渲染模板的模板引擎的名称。

2、示例

from django.shortcuts import render
def my_view(request):
context = {'foo': 'bar'}
return render(request, 'template_name.html', context)

三、redirect()

这个函数用于进行重定向,将用户重定向到另一个 URL。它接收目标 URL 作为参数,并可选地指定是否永久重定向。使用这个函数可以方便地在视图函数中进行重定向操作。

redirect(to, *args, permanent=False, **kwargs)

1、参数

  • to:要重定向的 URL,可以是视图函数、模型实例、URL 字符串等。
  • permanent:是否执行永久重定向,默认为 False

2、示例

from django.shortcuts import redirect
def my_view(request):
# 重定向到指定的 URL
return redirect('another_view')
def another_view(request):
# 重定向到相对 URL
return redirect('/some-url/')

3、补充

(1)默认返回临时重定向

  • 默认情况下,redirect() 返回临时重定向。
  • 所有以上形式都接受 permanent 参数;如果设置为 True 会返回一个永久重定向:
def my_view(request):
...
obj = MyModel.objects.get(...)
return redirect(obj, permanent=True)

(2)临时重定向和永久重定向的区别

  • 临时重定向(响应状态码:302)和永久重定向(响应状态码:301)对普通用户来说是没什么区别的,它主要面向的是搜索引擎的机器人。
    • A页面临时重定向到B页面,那搜索引擎收录的就是A页面。
    • A页面永久重定向到B页面,那搜索引擎收录的就是B页面。

四、get_object_or_404()

这个函数用于获取数据库中的对象,如果不存在则返回 404 错误页面。它接收一个模型类以及可选的查询参数,并返回查询到的对象或者抛出 Http404 异常。

1、参数

  • klass:模型类。
  • *args**kwargs:用于过滤对象的查询参数。

2、示例

from django.shortcuts import get_object_or_404
from myapp.models import MyModel
def my_view(request, object_id):
obj = get_object_or_404(MyModel, id=object_id)
return render(request, 'template.html', {'object': obj})

五、 get_list_or_404()

这个函数用于获取数据库中的对象列表,如果列表为空,则返回 404 错误页面。

get_list_or_404(klass, *args, **kwargs)

1、参数

  • get_object_or_404() 类似,用于过滤对象列表的查询参数。

2、示例

from django.shortcuts import get_list_or_404
from myapp.models import Book
from django.http import HttpResponse
from django.shortcuts import render
from django.http import Http404
def book_list(request):
# 获取所有图书的列表,如果列表为空则返回 404 错误页面
books = get_list_or_404(Book)
# 如果列表不为空,可以继续处理
context = {'books': books}
return render(request, 'book_list.html', context)
posted @   Xiao0101  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示

目录