位置: 编程技术 - 正文

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)

  • 退税怎么做账务处理,需要交什么税
  • 企业所得税汇算清缴
  • 递延所得税什么时候确认
  • 黑色金属冶炼压延品税收编码
  • 资产负债表存货怎么填列
  • 如何计算个别资金成本?
  • 死账呆账的处理程序
  • 计划成本法领用原材料会计分录
  • 公司未开展业务就没有债权债务吗
  • 工程结算怎么结转收入
  • 一次性奖励随工资发
  • 营改增以后小规模纳税人如何纳税
  • 以前年度发生的费用
  • 集团控股公司
  • 填报企业所得税资产总额怎么填
  • 广告费和业务宣传费15%还是30%
  • 文化建设费的征收标准
  • 公司支付劳务派遣人员工资账务处理
  • 个人取得上市公司股权
  • 固定资产计提折旧的会计科目
  • 饮料厂税率
  • 小企业短期投资的核算应设置的会计科目有
  • 个人垫付汽车修理怎么办
  • 投资性房地产企业有哪些
  • 怎么解决win11系统不兼容问题
  • 工程施工怎么结转到成本里
  • 事业单位个人借款未还违反什么规定
  • 一般纳税人出租其2016年4月30日前取得的不动产
  • 固定资产折旧方法的选择
  • docker搭建php
  • 项目不可用怎么解决
  • 2014年最佳阵容
  • 帝国cms标签调用大全
  • php和mysql的联合使用
  • PHP:imagetypes()的用法_GD库图像处理函数
  • 企业会计核算利润表
  • php操作redis
  • 用php写个简单的编程
  • 增值税结算方式的筹划
  • pytorch基础
  • 成功解决冲突的能力英语
  • unity怎么打包unitypackage
  • 直接融资租赁案例
  • 支付货物运费计入什么科目
  • 业务招待费能计入成本吗
  • 母子公司资产划转的涉税问题
  • 人力资源公司财务工作心得与感悟
  • 计提的费用收到增值税专票
  • 股东分红的会计分录怎么做
  • 发票管理办法是法律吗
  • 个税申报怎样作废
  • 微信收款和支付宝收款有啥区别
  • 费用多报销了,但已经给了,怎么办
  • 培训学校收入如何确认
  • sql server 用法
  • 文化事业建设税是含税还是不含税
  • 应付账款的主要舞弊形式
  • 现金收入支出表怎么填
  • 即期外汇交易有风险吗
  • 印花税计提金额怎么算
  • 私车公用涉及的税种有哪些
  • 房子贷款之后尾款发票
  • 员工办理健康证介绍信模板
  • 旅行社滞纳金计算公式
  • 企业会计账簿设计的原则
  • 在sqlserver2008中
  • windows怎么查
  • wondows文件保护
  • 神墓凌云
  • 使用Jasmine和Karma对AngularJS页面程序进行测试
  • 原生javascript+css3编写的3D魔方动画旋扭特效
  • javascript图片
  • React+react-dropzone+node.js实现图片上传的示例代码
  • 安卓大作业小游戏五子棋
  • netbeans12.0安装教程
  • 独资企业变更法人
  • 纳税服务投诉工作要求
  • 房产税江苏2021年征收标准
  • 北京税务查验中心官网
  • 重庆公交司机收入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设