一、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)
标签:重定向,get,shortcuts,request,Django,便捷,404,import
From: https://www.cnblogs.com/xiao01/p/18124658