一、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): |
| |
| return redirect('another_view') |
| |
| def another_view(request): |
| |
| 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): |
| |
| books = get_list_or_404(Book) |
| |
| |
| context = {'books': books} |
| return render(request, 'book_list.html', context) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类