• 售前

  • 售后

热门帖子
入门百科

Django视图函数的详细利用

[复制链接]
123457814 显示全部楼层 发表于 2021-10-26 13:22:16 |阅读模式 打印 上一主题 下一主题
视图是 MTV 计划模式中的 V 层,它是实现业务逻辑的关键层,可以用来毗连 M 层与 T 层,起着纽带般的作用,在《Django MTV和MVC的区别》中也做了相应的介绍,所以它的重要性可想而知。

1. 第一个视图函数


在 Django 中,视图函数是一个 Python 函数大概类,开辟者重要通过编写视图函数来实现业务逻辑。视图函数起首接受来自浏览器大概客户端的请求,并终极返回相应,视图函数返回的相应可以是 HTML 文件,也可以是 HTTP 协议中的 303 重定向。接下来编写一个简单的视图函数:
  1. from django.http import HttpResponse
  2. def Hello_my_django(request):
  3. 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目的。
  1. path:  请求页面的全路径,不包括域名
  2. method:  请求中使用的HTTP方法的字符串表示。全大写表示。例如
  3.      if req.method=="GET":
  4.         do_something()
  5.      elseif req.method=="POST":
  6.         do_something_else()
  7. GET:   包含所有HTTP GET参数的类字典对象
  8. POST:  包含所有HTTP POST参数的类字典对象
  9.     服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过
  10.     HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
  11.     if req.POST来判断是否使用了HTTP POST 方法;应该使用 if req.method=="POST"
  12. COOKIES:  包含所有cookies的标准Python字典对象;keys和values都是字符串。
  13. FILES:  包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中
  14.    name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:
  15.    filename:  上传文件名,用字符串表示
  16.    content_type: 上传文件的Content Type
  17.    content:  上传文件的原始内容
  18. user:  是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前
  19.     没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你
  20.     可以通过user的is_authenticated()方法来辨别用户是否登陆:
  21.     if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
  22.     时该属性才可用
  23. session: 唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。
  24. META:  一个标准的Python字典包含所有可用的HTTP头。可用标题取决于客户端和服务器,但这里是一些例子:
  25.    CONTENT_LENGTH  – 请求体的长度(一个字符串)。
  26.    CONTENT_TYPE   – 请求体的类型。
  27.    HTTP_ACCEPT   - 为响应–可以接受的内容类型。
  28.    HTTP_ACCEPT_ENCODING – 接受编码的响应
  29.    HTTP_ACCEPT_LANGUAGE – 接受语言的反应
  30.    HTTP_HOST   – 客户端发送的HTTP主机头。
  31.    HTTP_REFERER   – 参考页面
  32.    HTTP_USER_AGENT  – 客户端的用户代理字符串。
  33.    QUERY_STRING   – 查询字符串,作为一个单一的(分析的)字符串。
  34.    REMOTE_ADDR   – 客户端的IP地址
  35.    REMOTE_HOST   – 客户端的主机名
  36.    REMOTE_USER   – 用户通过Web服务器的身份验证。
  37.    REQUEST_METHOD  – 字符串,如"GET"或"POST"
  38.    SERVER_NAME   – 服务器的主机名
  39.    SERVER_PORT   – 服务器的端口(一个字符串)。
复制代码
3)return视图相应
视图函数要返回相应内容,这里的相应内容是我们用 HTML 标签编写的,把它作为 HttpResponse 的对象返回给浏览器。

2. 视图函数实行过程


上面视图函数的代码虽然区区几行,但是已经充实表现了视图层的实现过程。 Django 收到请求以后,起首创建一个带有请求信息的 HttpRequset 对象,将 HttpRequest 的对象 request 作为第一个参数转达给视图函数,视图吸取参数后继续向下实行,然后选择加载对应的视图,末了返回 HttpResponse 对象给浏览器。
通过本节的介绍,我们应该理解 View 视图函数的作用,以及视图函数的定义过程。
到此这篇关于Django视图函数的具体利用的文章就介绍到这了,更多干系Django视图函数内容请搜索草根技术分享从前的文章或继续浏览下面的干系文章渴望各人以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作