位置: 编程技术 - 正文

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)

  • 工业企业应缴纳的税金有哪些
  • 贷款损失税前扣除
  • 税收筹划的内容主要包括
  • 税收保全措施适用于
  • 减少实收资本需要缴纳什么税
  • 餐饮业购买的油类有哪些
  • 以摊余成本计量的金融资产交易费用
  • 所有应收账款是否均已记录
  • 申报从租计征的房产税必须提前备案吗
  • 电子发票上的字体大小
  • 企业预缴的增值税税率
  • 未及时支付工资时间界限
  • 预付账款转入其他非流动资产
  • 增值税专用发票和普通发票的区别
  • 收到采购款
  • 企业采购材料没有发票是要交企业所得税吗
  • 企业内部员工稿费
  • 营改增后建筑服务包括内容
  • 到期一次还本付息债券
  • 个人代公司付货款要证明吗
  • 小微企业季度所得税怎么计算
  • 4s店付款
  • 贴现率与再贴现率计算机行业是好多
  • 固定资产清理需要结转吗
  • linux怎么安装使用conda
  • 王者荣耀中如何隐藏贵族标志
  • 模具费用如何平摊到产品上
  • 怎样结转销售成本会计分录
  • 应收票据冲转是什么科目
  • 安全平台无法认证怎么办
  • php函数function
  • 销售合同怎么计算印花税
  • 借条和欠条的区别 法律效力
  • easyexcel解析csv
  • 安装win7提示版本过低
  • 个体户未达起征点需要申报吗
  • 预计利润表中的销售成本如何计算
  • Symfony2实现在controller中获取url的方法
  • River Avon in Bath, England (© Robert Harding World Imagery/Offset by Shutterstock)
  • 残疾人保障基金减免政策
  • 委托研发技术合同登记
  • css+html
  • 暂估价与发票价的区别
  • 织梦模板官网
  • 新成立的公司企业所得税
  • 小规模纳税人减按1%政策
  • 银行对账单可以作为原始凭证入账吗
  • MySQL导入导出命令
  • mysql where join
  • 电子税务局实名核验失败
  • 固定资产变动方式名称
  • 固定资产处置当月需要计提折旧吗
  • 一般纳税人怎样开3个点的专票
  • 行政事业单位的营业执照叫什么
  • 未使用的固定资产计提折旧应当计入
  • 金蝶当月没有账如何结转到下月
  • jdbc取数据
  • sql语句常用语句
  • jmeter怎么连接数据库
  • winxp更新到win10
  • solaris 11.4
  • linux读取命令
  • win8.1截图工具快捷键
  • windows10 2021预览版
  • msvc命令行
  • 怎么用javascript
  • java 迭代器 remove
  • python数据结构与算法分析 第2版(图灵出品)
  • bat脚本删除注册表
  • javascript的sort
  • three.js碰撞检测
  • javascript的理解
  • 安卓实时屏幕
  • javascript 代码
  • jquery获取动态生成的元素的值
  • 安家费购房补贴区别
  • 地下车库是否缴房产税
  • 用友u8外部凭证怎么删除
  • 新疆地方税务局举报电话
  • 广西电子税务局电话人工客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设