django框架--视图系统

简介: 目录一、视图函数的理解二、视图函数的定位三、请求对象HttpRequest四、响应对象HttpResponse一、视图函数的理解视图函数的作用是,对指定的url执行业务逻辑,视图函数将会作为model层和template层的桥梁,最主要的逻辑是操作数据库以及完成模板渲染前的上下文准备。

目录

一、视图函数的理解

视图函数的作用是,对指定的url执行业务逻辑,视图函数将会作为model层和template层的桥梁,最主要的逻辑是操作数据库以及完成模板渲染前的上下文准备。
视图系统的模块:

  1. 请求对象
  2. 业务逻辑
    2.1 连接model
    2.2 连接template
  3. 响应对象

二、视图函数的定位

所有实现wsgi协议的web框架都必须实现如下接口形式的application函数,完成对http请求的http响应,web应用程序和web服务器的分界即从此函数开始。
application函数在web应用程序中被定义,而在wsgi服务器(web服务器)上被无限循环调用,在django中,application函数中会通过路由系统根据url来寻找对应的view,然后执行view视图函数处理业务逻辑。

# 伪代码

def application(environ, start_response):
    # 此函数在web应用程序上被定义,在web服务器上被无限循环调用
    view = route(environ.url)  # 路由系统
    response = view(environ, *args, **kw)  # 视图系统

    return response

django视图功能定位图示

img_9ab43e0fc9ce8e34fbf6f09298664746.jpe

视图函数的本质作用就是:接收一个reqeust请求,正确处理,然后返回一个reponse响应。
为了方便在视图函数中处理请求与响应,reqeust请求报文在web框架中被封装成HttpRequest请求对象,而reponse响应报文也被封装成HttpResponse响应对象。
所以视图函数中,除了处理逻辑之外,还有两个重要的对象,就是请求对象和响应对象。

三、请求对象HttpRequest

请求对象就是对http请求报文的封装,django自动执行封装并传入视图函数第一参数,我们需要在视图函数中调用。
请求对象中有很多需要被进一步处理的数据,常用的接口如下:

常用接口:
HttpRequest.method  请求方法
HttpRequest.GET   对应GET请求类型的数据字典
HttpRequest.POST    对应POST请求类型的数据字典
HttpRequest.path   请求的路径
HttpRequest.get_full_path()  请求的路径+get数据
HttpRequest.is_ajax()  判断是否为ajax形式的请求

四、响应对象HttpResponse

响应对象就是对http响应报文的封装,响应对象需要我们在视图函数中创建,并在视图函数最后return给上层函数即底层控制循环。响应对象意味着web服务程序通过业务逻辑处理后返回的响应信息。
在视图函数中返回响应对象主要有两种形式的方法:

方式1: 以字符串字面量为接口:return HttpResponse('xxx'),直接返回的字符串会作为html页面的内容,会被浏览器所执行,即,可以返回一个<h1>xxx</h1>

方式2: 以html文件或模板文件为接口:return render(request, 'index.html', {xxx}),可以直接返回最终形态的html字符串。通过render函数调用渲染引擎对模板文件执行渲染操作,
模板文件中包含模板语法,这些模板语法被认为是html文件中的占位符,用于后续填充动态数据,render函数内部最后会执行return HttpResponse操作。

注意:为了提高安全性,render函数在处理{xxx}渲染上下文时,如果包含有可执行的html数据的时候会自动转义成特殊字符,这主要是为了防止插入类似link或者script等这些浏览器会执行的html代码给客户端带来的安全性问题。render函数流程是进行渲染得到http响应报文中的响应体字符串,然后再返回一个HttpResponse对象,这相对于方式1,就是多了渲染的流程。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
1月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
12天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
48 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
1月前
|
人工智能 BI 数据处理
【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管理员三种
本文介绍了一个基于Python开发的医院挂号管理系统,该系统包含医生、患者、管理员三种角色,旨在优化挂号流程,提高医疗服务质量和管理效率,并通过信息化手段提升患者就医体验和医院运营决策的数据支持能力。
【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管理员三种
|
26天前
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
40 2
|
26天前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
13 1
|
6天前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术
|
1月前
|
自然语言处理 前端开发 数据处理
Django的模板系统
【8月更文挑战第13天】
23 2
|
20天前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
37 0
|
21天前
|
C++ Python
Django视图函数VS类视图:如何选择最适合你的开发方式?
【8月更文挑战第31天】本文对比了Django中的函数视图和类视图。函数视图直接处理HTTP请求和响应,灵活且易于维护,适用于简单业务逻辑;类视图基于Python类,提供更丰富的功能和更高的灵活性,适合处理复杂业务逻辑。选择哪种视图取决于具体需求,合理使用两者可帮助你构建高效且易维护的Django应用。
12 0