位置: 编程技术 - 正文
推荐整理分享python模拟Django框架实例(python模拟ajax),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:django models.py,python模拟ajax,python 模,django 模态框,python模态窗口,python模拟ajax,python django框架教程,python 模,内容如对您有帮助,希望把文章链接给更多的朋友!
一、python实现web服务器
web开发首先要有web服务器才行。比如apache,但是在开发阶段最好有一个简单方便的开发服务器,容易重启进行调试,等开发调试完毕后,再将代码部署到成熟稳定高效的web服务器。
执行上面这个程序后,打开浏览器,访问一个以 开头的网址即可看到 environ 所包含的内容。
(截取一小部分)
二、基础知识
浏览器和web应用之间使用的是http协议,它规定了请求和响应的格式。1、请求包(Http Request)请求主要包括请求的方法,请求的URL,请求头,请求体。请求的方法http规定有GET, POST, PUT, DELETE,只不过通过浏览器发起的web请求一般只涉及GET和POST请求。GET一般用来获取服务器内容,POST类似修改内容,PUT添加,DELETE删除。一般通过提交html的form表单发起POST请求。成功后需要进行重定向。从协议上看GET,HTTP请求最大的区别就是GET请求没有请求体,而POST请求有。这就意味着可以通过POST请求向服务器发送大量数据,如上传文件等,当然GET请求也可以通过URL本身以及其参数向服务器传递参数,比如urlarg1=value&arg2=value 请求头就是包含了请求包的描述信息。 比如编码,包长度等。 2、响应包(Http Response)http的响应包的格式更简单一些,包括状态码,响应头和响应体,状态码表示该请求的结果,比如表示成功表示资源没有找到表示服务器错误表示资源已经换了地址,客户端需要跳转。响应头和请求头类似,包括一些描述信息,响应体一般就是输出内容了,大部分是页面html代码。 3、请求的生命周期1. web服务器接收到原始的http请求后进行一定程度的包装再交给web应用程序2. web应用程序处理后,再以一定的格式返回数据给web服务器3. web服务器再将数据包装成http响应包返回给浏览器。4、关于cgicgi(common gateway interface)就是web服务器与web应用程序之间的一个古老的协议,在cgi协议中,web服务器将http请求的各种信息放到cgi应用程序的环境变量中,cgi应用程序再通过标准输出,输出它的响应头和相应内容给web服务器。 上面用到的开发服务器与应用程序之间所使用的协议叫做wsgi,它和cgi类似,同样将请求包装成一种key-value对,只不过cgi通过环境变量传给cgi应用程序,而wsgi直接使用python的字典对象来传递。 hello_app的第一个参数environ就是包含请求信息的字典对象,第二个参数是个函数,web应用程序在输出响应内容前需要先调用它来输出状态码和响应头。处理web请求和响应这里使用webob模块来处理请求和响应,需要安装,这里首先要安装setuptools模块,一个包管理的工具,可以通过这个工具自动下载需要的软件包,类似ubuntu的app-get。下面是地址: webob这样就会自动下载安装。
简单使用:
>>> # 导入 Request 对象
>>> from webob import Request
>>> environ = {}
>>> # 使用 Request 来包装 environ 字典
>>> req = Request(environ)
使用一个Request类来包装environ,然后通过Request对象的属性和方法对environ进行访问。由于只有在一个web环境才能得到一个真实的environ字典,为了方便大家在shell中进行测试,webob提供了一个模拟简单web请求的方法:
也可以通过req查找其它有用的信息
同时也可以通过webob模块中的Response对象来包装响应信息。
下面使用webob模块重写之前的hello_app
为了让 wsgi_wrapper 更加通用一点,可以把它设计成装饰器的形式:
三、模板果然,还是需要用到模板,不能总是直接在Response中写上长串的html代码。python中的模板引擎主要有mako, genshi, jinjia等。mako 主要特点在于模板里面 可以比较方便的嵌入Python代码,而且执行效率一流;genshi 的特点在于基于 xml, 非常简单易懂的模板语法,对于热爱xhtml的朋友来说是很好的选择,同时也可以嵌入Python 代码,实现一些复杂的展现逻辑;jinja 和genshi 一样拥有很简单的模板语法,只是不 依赖于 xml 的格式,同样很适合设计人员直接进行模板的制作,同时也可以嵌入Python 代码实现一些复杂的展现逻辑。
这里使用Mako,地址 setup.py install进行安装简单的模块例子:
保存为simple.html文件,然后需要给模板对象传递data和name两个参数,然后进行渲染,就可以输入html内容
保存为test_template.py文件,运行就可以输入内容:$ python test_template.py
下面对hello_app程序进行重构:1. 把 wsgi_wrapper 单独放到通用模块 utils.py:
2. 把 hello_app 给彻底独立出来,形成单独的模块 controller.py :
3. 这样 main.py 就变成这样了:
四、ORM(Object Relation Mapping, 对象关系映射)终于也要这一步了,作为web应用,还是需要与数据库进行合作。这里使用sqlalchemy,是一个 ORM (对象-关系映射)库,提供Python对象与关系数据库之间的映射。和Django的models用法很像,也是可以通过python代码来创建数据库表,并进行操作。sqlalchemy 还可以自动映射 Python 对象的继承,可以实现eager loading、lazy loading, 可以直接将 Model 映射到自定义的 SQL 语句,支持n多的数据库等等等等。 可以说 sqlalchemy 既有不输于 Hibernate 的强大功能,同时不失 Python的简洁优雅。使用方法:
上面的代码你执行两遍就会报错,为什么。。。因为插入数据库的主键重复了。。。。 这样就可以整合到之前的controller.py文件中
五、URL分发控制给不同的资源设计不同的 URL, 客户端请求这个 URL,web应用程序再根据用户请求的 URL 定位到具体功能并执行之。提供一个干净的 URL 有很多好处:1. 可读性,通过 URL 就可以大概了解其提供什么功能2. 用户容易记住也方便直接输入3.设计良好的 URL 一般都更短小精悍,对搜索引擎也 更友好使用selector模块来处理url映射下载地址 下载那个source文件进行python setup.py install 首先把urls的配置单独放到urls.py中
修改main.py
然后,在 hello_app 中就可以通过 environ['wsgiorg.routing_args'] 获取到 name 参数了,不过在 wsgi_wrapper 其实还可以进一步简化 hello_app 的工作: 直接把解析得到的参数当作函数参数传过去!修改 utils.py:
那 hello_app 就可以改成这样了:
总结以上部分的实现,就是类似Django框架中的几个主要的功能模块,希望对大家的学习有所帮助。
python中list列表的高级函数 在Python所有的数据结构中,list具有重要地位,并且非常的方便,这篇文章主要是讲解list列表的高级应用,基础知识可以查看博客。此文章为python英文文
python实现汉诺塔递归算法经典案例 学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,所以本人觉得可以写篇博客来表达一下自己的见解。这markdown
批处理与python代码混合编程的方法 批处理可以很方便地和其它各种语言混合编程,除了好玩,还有相当的实用价值,比如windows版的rubygem包管理器就是运用了批处理和ruby的混合编写,batho
标签: python模拟ajax
本文链接地址:https://www.jiuchutong.com/biancheng/386892.html 转载请保留说明!上一篇:python采用django框架实现支付宝即时到帐接口(python django orm)
下一篇:python中list列表的高级函数(python里list)
友情链接: 武汉网站建设