django框架--视图系统
一、视图函数的理解
视图函数的作用是,对指定的url
执行业务逻辑,视图函数将会作为model
层和template
层的桥梁,最主要的逻辑是操作数据库以及完成模板渲染前的上下文准备。
视图系统的模块:
- 请求对象
- 业务逻辑
2.1 连接model
层
2.2 连接template
层 - 响应对象
二、视图函数的定位
所有实现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视图功能定位图示
视图函数的本质作用就是:接收一个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,就是多了渲染的流程。
django框架--视图系统的更多相关文章
- Django框架----路由系统(详细)
Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. ...
- django框架--中间件系统
目录 零.参考 一.中间件的基本理解 二.中间件的系统定位 三.中间件的配置 四.中间件的执行流程 五.中间件与装饰器之间的思考 六.中间件的应用场景 七.内置中间件 八.总结 零.参考 https: ...
- django框架--路由系统
目录 一.路由系统理解 二.路由系统功能划分 三.路由表创建 创建工具 二级路由 路由别名 动态路由及重定向 四.自定义错误页面 五.图示路由系统在框架中的定位 六.路由系统的进阶想法 一.路由系统理 ...
- Django框架-模板系统
来看一段代码 def current_datetime(request): now = datetime.datetime.now() html = "<html><bod ...
- python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)
12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...
- Django框架----路由系统、视图和模板(简单介绍)
一.路由配置系统(urls) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表: 你就是以这种方式告诉Django,对于这个URL ...
- Python学习(三十二)—— Django之视图系统
转载自:http://www.cnblogs.com/liwenzhou/articles/8305104.html Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Pyth ...
- Django框架----视图(views)
Django的Views(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误 ...
- Django之视图系统
Django的View(视图) 一个视图函数(类),简称视图,是一个简单的python函数(类),它接受web请求并返回web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,或者 ...
随机推荐
- 解决以showModalDialog打开的页面在提交表单时弹出新窗口的问题
源代码如下: 父页面: window.showModalDialog("../readfile/readFile.jsp","","dialogWid ...
- Error setting expression 'XXX‘'[Ljava.lang.with value '[Ljava.lang.String;@10101fb'
ognl报的警告,说明你的格式错误,一般是日期格式错误,格式转换器的应用,id设置的类型不对String 类型,输入了Int类型所以方法一是改变这个类中的id的属性 然后get和set也跟着改变 另一 ...
- 20170908工作日记--Volley源码详解
Volley没有jar包,需要从官网上下载源码自己编译出来,或者做成相关moudle引入项目中.我们先从最简单的使用方法入手进行分析: //创建一个网络请求队列 RequestQueue reques ...
- 【转】启动、停止Windows服务的DOS命令
需要用管理员身份运行 在图形界面中启动.停止服务很方便,但是操作系统有时候会出故障,此时不妨使用原始的DOS命令启动.停止服务,也许会收到意想不到的效果的! 方法/步骤 1 开始→所有程序. 2 附件 ...
- [译]window.onerror事件
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- 利用ASIHTTPRequest访问网络
ASIHTTPRequest是第三方类库,ASIHTTPRequest对CFNetwork API进行了封装. 有如下特点: l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 l ...
- Spring框架事务支持模型的优势
全局事务 全局事务支持对多个事务性资源的操作,通常是关系型数据库和消息队列.应用服务器通过JTA管理全局性事务,API非常烦琐.UserTransaction通常需要从JNDI获取,意味着需要与JND ...
- Linq的基本用用法
Linq 的基本用法: Sort , OrderBy, Skip,Take,Where,Compare,Join,Distinct ,InsertRange 等关键词 Select用法 var sel ...
- LeetCode146:LRU Cache
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- mongodb 命令行安装
因为下载zip的文件速度快,所以就使用了zip,zip格式的解压完后需要使用命令行安装,步骤大致如下: 1,首先创建一个文件叫mongo的文件,里面包含了数据库存放的目录以及日志,然后在指定的目录下创 ...