首页 > 其他分享 >Django便捷函数shortcuts

Django便捷函数shortcuts

时间:2024-04-09 19:57:14浏览次数:9  
标签:重定向 get shortcuts request Django 便捷 404 import

一、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

相关文章

  • Django框架之中间件
    一、Django的生命周期二、Django中间件介绍1、什么是Django中间件?在Django中,中间件(middleware)是一个轻量级、插件式的框架,用于在Django请求和响应处理过程中进行拦截、处理和转换。中间件可以在处理请求之前和之后执行特定的逻辑,允许开发者对请求和响应进行全局性的处理,而无需......
  • Django框架之auth模块
    一、引入在我们创建完Django项目之后,点击urls.py会发现有一个path('admin/',admin.site.urls),的路由,那这个是什么呢?输入127.0.0.1::8000/admin我们可以看见这个管理员的登录页面那我们没有用户名和密码啊,这怎么登录进去?所以我们需要创建一个管理员(超级用户),在命令行输入pyt......
  • Django后端如何限制上传文件大小
    在Django中,对上传文件大小进行限制可以通过几种不同的方法来实现。这包括在表单层面、视图层面或通过设置Django项目的全局配置。以下是一些常用的方法:方法1:使用Django设置限制文件大小在Django的settings.py文件中,你可以设置DATA_UPLOAD_MAX_MEMORY_SIZE来限制上传文件的大......
  • python计算机毕设【附源码】基于html的校园网设计与实现(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在信息技术快速发展的今天,互联网已经成为人们获取信息、交流沟通的重要平台。对于学校而言,拥有一个功能齐全、操作简便的校园网系统显得尤为重要。基于HTML......
  • python计算机毕设【附源码】基于MySQL的房屋中介系统(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在当今社会,房地产市场的繁荣发展使得房屋中介行业成为了连接房东与租户、买家之间的重要桥梁。随着互联网技术的不断进步和普及,传统的房屋中介服务方式已经......
  • Django框架之form组件
    一、前戏需求:写一个注册功能获取用户名和密码,利用form表单提交数据在后端判断用户名和密码是否符合一定的条件用户名不能含有三国演义密码不少于三位1、前端<formaction=""method="post"><p>username:<inputtype="text"name="username"><......
  • Django框架之Cookie和Session
    一、cookie与session的发展史Cookie和Session是Web开发中常用的两种机制,用于在客户端和服务器之间存储和管理用户信息。1、Cookie的发展史:1994年:由Netscape公司的工程师LouMontulli发明。最初的目的是为了解决HTTP协议的状态管理问题,使网站能够在浏览器端存储和读取用户信息......
  • Django框架之分页器使用
    一、问题描述针对上一篇章的批量插入数据,我们会发现一个很严重的问题,将所有数据都放到前端页面展示的时候一千多条数据放在了一页,这样太不方便,就像书本一样,不可能把所有内容都放在一页吧。所以我们可以也想书本一样,尝试做分页处理二、分页推导首先需要明确的是,get请求/post请......
  • python计算机毕设【附源码】基于Android开发的智能音乐播放系统(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着移动互联网的飞速发展,智能手机已经成为人们日常生活中不可或缺的一部分。在众多手机应用中,音乐播放系统是用户使用频率较高的应用之一。传统的音乐播放......
  • Django框架之序列化组件
    一、为什么要序列化呢?我们在写一些项目前后端是分离的,这意味着无法直接利用django提供的模版语法来实现前后端的数据交互,需要将数据转换成前后端都能接收处理的格式,即json,一般的格式都是列表套字典。那么我的前端想拿到由ORM得到的数据库里面的一个个用户对象,而我的后端也想直接......