位置: 编程技术 - 正文

python模拟Django框架实例(python模拟ajax)

编辑:rootadmin

推荐整理分享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本身以及其参数向服务器传递参数,比如url&#;arg1=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查找其它有用的信息

python模拟Django框架实例(python模拟ajax)

同时也可以通过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)

  • 收到所得税汇算退税计入补贴收入
  • 增值税发票平台怎么下载已认证发票
  • 上年度已交房产税减免如何做账务处理
  • 建筑业增值税税负预警
  • 税负转嫁的概念是什么
  • 代收代缴个人所得税手续费
  • 升级10万元版发票有什么要求
  • 跨月冲红的发票怎么做会计分录
  • 个体户每月开票超3万
  • 买二手设备还需要备案吗
  • 企业所得税费用税率
  • 商品房买卖合同没有约定逾期交房违约金
  • 研发废料收入抵研发
  • 工资发多了需要退回吗
  • 政府制定优惠政策
  • 付敏科技有限公司官网
  • 出纳记账本如何手工记账
  • 发票专用章盖错地方了可以用吗
  • 企业原材料盘盈的原因分析
  • 合营企业之间为什么不构成关联方
  • 企业生产销售白酒取得的下列款项中,应并入
  • 地方教育附加怎么算的?
  • 收到的产品返利怎么做账
  • 外购的形式
  • 个人销售自己使用过的物品免征增值税
  • adv举例
  • PHP:Memcached::add()的用法_Memcached类
  • hp是什么代码
  • 资产与负债的计税基础
  • 艾叶泡脚的功效与作用及禁忌
  • 出售固定资产净收益影响营业利润吗
  • 其他应收和其他应付可以共用吗
  • framework启动
  • 会计政策变更常见例子
  • 计提坏账准备和转销坏账准备
  • 工业企业如何纳税
  • 调入的无形资产记入哪里
  • 流动资产金额
  • laravel入门与实战:构建主流php应用开发框架
  • php实现会话的步骤
  • 房租费用计入什么现金流量
  • python连接网络
  • 固定资产盘盈、盘亏的账务处理?
  • 水电费发票如何分配给客户
  • 工资计提未发放,调增还是调减
  • 银行本票怎么办理转账
  • mongodb $nin
  • 织梦模板改成帝国模板
  • 收到法院款项如何做账
  • 研发增值税税率怎么算
  • 增值税和个人所得税怎么算
  • 利用java实现计算器
  • 财产租赁合同印花税双方都要交吗
  • 企业购买了数千亿资产
  • 营业外收入月末怎么处理
  • 2、开办费用计入哪个账户?
  • 库存商品什么时候确认收入
  • 办公设备维修费会计分录
  • 银企对账如何操作
  • 注册公司好麻烦
  • 免抵税额和免抵退税额一样吗
  • windows mysql1045
  • Windows Server 2003环境更改Boot.ini文件
  • 搭建技巧和方法示意图
  • Mac应用程序的格式
  • centos配ip的方法
  • excel表格文本形式在哪里
  • unity3d,C#使用sqlite作为数据库解决方案思路
  • javascript html5 canvas实现可拖动省份的中国地图
  • jquery的认识和使用
  • shell脚本的实现
  • python生成随机数据
  • 每天一篇小练笔主题
  • 深入JavaScript高级语法
  • 教师十三薪是什么意思
  • 石家庄水费阶梯价格表 2020
  • 中国移动的电子协议推送服务是什么
  • 一次性收入多少要交个人所得税
  • 余姚市税务局咨询热线
  • 农夫山泉水质量合格吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设