返回顶部
首页 > 资讯 > 后端开发 > Python >Django视图函数的具体使用
  • 473
分享到

Django视图函数的具体使用

2024-04-02 19:04:59 473人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

视图是 MTV 设计模式中的 V 层,它是实现业务逻辑的关键层,可以用来连接 M 层与 T 层,起着纽带般的作用,在《Django MTV和mvc的区别》中也做了相应的介绍,所以它的

视图是 MTV 设计模式中的 V 层,它是实现业务逻辑的关键层,可以用来连接 M 层与 T 层,起着纽带般的作用,在《Django MTV和mvc的区别》中也做了相应的介绍,所以它的重要性可想而知。

1. 第一个视图函数

在 DjanGo 中,视图函数是一个 python 函数或者类,开发者主要通过编写视图函数来实现业务逻辑。视图函数首先接受来自浏览器或者客户端的请求,并最终返回响应,视图函数返回的响应可以是 html 文件,也可以是 Http 协议中的 303 重定向。接下来编写一个简单的视图函数:


from django.http import HttpResponse
def Hello_my_django(request):
 return HttpResponse('<html><body>Hello my Django</body></html>')

下面针对以上 3 行代码做解析:

1)HttpResponse视图响应类型
从 django.http 模块中导入 HttpResponse,从它简单的名字我们可以得知,它是一种视图的响应类型。

在HttpResponse对象上扩展的常用方法:

  • - 页面渲染:render(推荐),render_to_response,
  • - 页面跳转:redirect
  • - locals: 可以直接将对应视图函数中所有的变量传给模板

2)视图函数参数request
我们定义了一个名为“Hello_my_django”的函数,Django 规定了,视图函数至少有一个参数,第一个参数必须是 request,request 是 HttpRequest 请求类型的对象,它携带了浏览器的请求信息,所以视图函数的第一个参数必须为 request。

当请求一个页面时,Django 创建一个 HttpRequest对象包含原数据的请求。然后 Django 加载适当的视图,通过 HttpRequest作为视图函数的第一个参数。每个视图负责返回一个HttpResponse目标。


path:  请求页面的全路径,不包括域名
method:  请求中使用的HTTP方法的字符串表示。全大写表示。例如
     if req.method=="GET":
        do_something()
     elseif req.method=="POST":
        do_something_else()
GET:   包含所有HTTP GET参数的类字典对象
POST:  包含所有HTTP POST参数的类字典对象
    服务器收到空的POST请求的情况也是可能发生的,也就是说,表单fORM通过
    HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
    if req.POST来判断是否使用了HTTP POST 方法;应该使用 if req.method=="POST"
COOKIES:  包含所有cookies的标准Python字典对象;keys和values都是字符串。
FILES:  包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中 
   name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:
   filename:  上传文件名,用字符串表示
   content_type: 上传文件的Content Type
   content:  上传文件的原始内容
user:  是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前
    没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你
    可以通过user的is_authenticated()方法来辨别用户是否登陆:
    if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
    时该属性才可用
session: 唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。
META:  一个标准的Python字典包含所有可用的HTTP头。可用标题取决于客户端和服务器,但这里是一些例子:
   CONTENT_LENGTH  – 请求体的长度(一个字符串)。
   CONTENT_TYPE   – 请求体的类型。
   HTTP_ACCEPT   - 为响应–可以接受的内容类型。
   HTTP_ACCEPT_ENcoding – 接受编码的响应
   HTTP_ACCEPT_LANGUAGE – 接受语言的反应
   HTTP_HOST   – 客户端发送的HTTP主机头。
   HTTP_REFERER   – 参考页面
   HTTP_USER_AGENT  – 客户端的用户代理字符串。
   QUERY_STRING   – 查询字符串,作为一个单一的(分析的)字符串。
   REMOTE_ADDR   – 客户端的IP地址
   REMOTE_HOST   – 客户端的主机名
   REMOTE_USER   – 用户通过WEB服务器的身份验证。
   REQUEST_METHOD  – 字符串,如"GET"或"POST"
   SERVER_NAME   – 服务器的主机名
   SERVER_PORT   – 服务器的端口(一个字符串)。

3)return视图响应
视图函数要返回响应内容,这里的响应内容是我们用 HTML 标签编写的,把它作为 HttpResponse 的对象返回给浏览器。

2. 视图函数执行过程

上面视图函数的代码虽然区区几行,但是已经充分体现了视图层的实现过程。 Django 收到请求以后,首先创建一个带有请求信息的 HttpRequset 对象,将 HttpRequest 的对象 request 作为第一个参数传递给视图函数,视图接收参数后继续向下执行,然后选择加载对应的视图,最后返回 HttpResponse 对象给浏览器。

通过本节的介绍,我们应该理解 View 视图函数的作用,以及视图函数的定义过程。

到此这篇关于Django视图函数的具体使用的文章就介绍到这了,更多相关Django视图函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Django视图函数的具体使用

本文链接: https://lsjlt.com/news/122219.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django视图函数的具体使用
    视图是 MTV 设计模式中的 V 层,它是实现业务逻辑的关键层,可以用来连接 M 层与 T 层,起着纽带般的作用,在《Django MTV和MVC的区别》中也做了相应的介绍,所以它的...
    99+
    2024-04-02
  • Django 聚合函数的具体使用
    前言 orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum、Avg、Count、Max、Min,接下来我们逐个介绍 聚合函数 所有的聚合函数都是放在djan...
    99+
    2024-04-02
  • django中path和url函数的具体使用
    在django学习中,经常看到这两种路由形式 from django.urls import path from django.conf.urls import url djang...
    99+
    2023-03-19
    django path django url
  • Pygame Draw绘图函数的具体使用
    Pygame 中提供了一个draw模块用来绘制一些简单的图形状,比如矩形、多边形、圆形、直线、弧线等。 pygame.draw模块的常用方法如下表所示: ...
    99+
    2024-04-02
  • Django之views视图函数
    views视图函数属于MTV中逻辑处理的部分视图函数包含着两个对象,HttpRequest对象和HttpResponse对象 HttpRequest对象在Django中会默认传到views函数中作为第一个参数 HttpRequest的属...
    99+
    2023-01-30
    视图 函数 Django
  • Pandasdiv()函数的具体使用
    div()方法将DataFrame中的每个值除以指定的值,并返回一个计算处理后的Dataframe结果 DataFrame.div()函数其实是除法运算,表格中的每个数据都是被除数 ...
    99+
    2023-05-14
    Pandas div()函数 Pandas div DataFrame.div()
  • numpy.ndarray.flatten()函数的具体使用
    目录numpy.ravel() 和 numpy.flatten()该函数主要用来快速扁平化数组,请看如下代码: import numpy as np class Debug:  ...
    99+
    2023-03-13
    numpy.ndarray.flatten numpy flatten
  • np.repeat()函数的具体使用
    目录使用np.repeat()展平二维数组np.repeat()函数的坐标轴问题二维三维在 numpy 模块中的 repeat 函数,总是会出现设置 axis 坐标轴的情况,这时的坐...
    99+
    2023-03-13
    np.repeat()函数 np.repeat
  • np.concatenate()函数的具体使用
    目录引言函数调用调用方法各个参数的意义注意事项示例1------一维数组示例2------二维数组示例3------三维数组引言 提到 numpy 的数组操作,我们就不得不说到 np...
    99+
    2023-03-13
    np.concatenate()函数
  • np.newaxis()函数的具体使用
    np.newaxis np.newaxis 的功能是增加新的维度,但是要注意 np.newaxis 放的位置不同,产生的矩阵形状也不同。 通常按照如下规则: np.newaxis 放...
    99+
    2023-03-13
    np.newaxis使用 np.newaxis
  • pythonre.match函数的具体使用
    目录1 re.match 说明2 span 的使用3 group 的使用4 匹配不到内容的情况5 使用group 注意点6 flag 的使用1 re.match 说明 re.matc...
    99+
    2023-02-13
    python re.match
  • Pythonisalnum()函数的具体使用
    目录1、包含字母和数字的情况2、汉字和其他语言的情况3、空字符串、制表符、特殊符号、标点符号isalnum() 可以判断字符串的字符是否全都是「字母」和「数字」。 语法 string...
    99+
    2023-08-08
    Python isalnum()
  • django中websocket的具体使用
    websocket是一种持久化的协议,HTTP协议是一种无状态的协议,在特定场合我们需要使用长连接,做数据的实时更新,这种情况下我们就可以使用websocket做持久连接。http与...
    99+
    2024-04-02
  • numpy.reshape()的函数的具体使用
    np.reshape()基本用法 常用于矩阵规格变换,将矩阵转换为特定的行和列的矩阵格式:a1.reshape(x,y,z,…)注意:将矩阵a1转变成(x, y,z,&...
    99+
    2023-02-10
    numpy.reshape()
  • MySQL ifnull()函数的具体使用
    mysql IFNULL函数简介 MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。两个参数可以是文字值或表达式。 以下说...
    99+
    2022-08-11
    MySQLifnull()函数
  • Mysql CONVERT函数的具体使用
    目录1.转换指定字符集2.转换指定数据类型示例CONVERT函数用于将值转换为指定的数据类型或字符集 1.转换指定字符集 CONVERT函数用于将字符串expr的字符集变成transcoding_name 语法结构 CO...
    99+
    2022-08-12
    MysqlCONVERT函数 MysqlCONVERT
  • Mysql CAST函数的具体使用
    目录语法参数说明示例练习案例CAST函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型 语法 CAST(value AS datatype) AS关键字用于分隔两个参数,在AS之前的是要处理的数据,在AS之后的...
    99+
    2022-08-12
    MysqlCAST函数 MysqlCAST
  • pandas DataFrame.shift()函数的具体使用
    pandas DataFrame.shift()函数可以把数据移动指定的位数 period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列. eg: 有这样一个...
    99+
    2024-04-02
  • pandas函数isnull的具体使用
    目录一.假设有数据集df二.判断有空值的列三.显示出有空值列的列名的列表四.删除全部是空值的行五.删除全部是空值的列六.对某一列中的空值进行填充七.method参数一.假设有数据集d...
    99+
    2024-04-02
  • C++ setw()函数的具体使用
    C++ setw() 函数用于设置字段的宽度,语法格式如下: setw(n) n 表示宽度,用数字表示。 setw() 函数只对紧接着的输出产生作用。 当后面紧跟着的输出字段长度小...
    99+
    2023-03-09
    C++ setw()
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作