Django视图函数的具体使用

 更新时间:2021年03月23日 10:26:59   投稿:zx  
这篇文章主要介绍了Django视图函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

视图是 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视图函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • win10从零安装配置pytorch全过程图文详解

    win10从零安装配置pytorch全过程图文详解

    这篇文章主要介绍了win10从零安装配置pytorch全过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • python构造函数init实例方法解析

    python构造函数init实例方法解析

    这篇文章主要介绍了python构造函数init实例方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 总结Python编程中三条常用的技巧

    总结Python编程中三条常用的技巧

    这篇文章主要介绍了总结Python编程中三条常用的技巧,包括JSON格式的转换、else语句的活用和setdefault方法的使用,需要的朋友可以参考下
    2015-05-05
  • python uv包管理小结

    python uv包管理小结

    uv 是一个高性能的 Python 包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对 Python 版本管理的支持,本文主要介绍了python uv包管理小结,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • python库ggpy安装使用实例(散点图创建)

    python库ggpy安装使用实例(散点图创建)

    这篇文章主要为大家介绍了python库ggpy安装使用实例,如何创建简单的散点图及制作带有趋势线的散点图详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • python多线程扫描端口(线程池)

    python多线程扫描端口(线程池)

    这篇文章主要为大家详细介绍了python多线程扫描端口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Python中用try-except-finally处理异常问题

    Python中用try-except-finally处理异常问题

    这篇文章主要介绍了Python中用try-except-finally处理异常问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python实现免费音乐下载器

    Python实现免费音乐下载器

    本文主要为大家介绍了通过Python实现的免费音乐下载器,文中的示例代码讲解详细,对我们的学习或工作有一定的帮助,需要的小伙伴可以学习一下
    2021-12-12
  • pycharm不以pytest方式运行,想要切换回普通模式运行的操作

    pycharm不以pytest方式运行,想要切换回普通模式运行的操作

    这篇文章主要介绍了pycharm不以pytest方式运行,想要切换回普通模式运行的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Python中用xlwt制作表格实例讲解

    Python中用xlwt制作表格实例讲解

    在本篇文章里小编给大家整理的是一篇关于Python中用xlwt制作表格实例讲解内容,有兴趣的朋友们可以学习下。
    2020-11-11

最新评论