位置: 编程技术 - 正文

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)

  • 政府工会经费收入如何做凭证
  • 零申报还要抄税吗
  • 劳务报酬现金 过账
  • 发票查询校验码看不清怎么办
  • 股票交易印花税税率
  • 项目规划设计费用取费标准
  • 免税企业开了含税发票
  • 企业合并会计处理方法研究论文
  • 收社团费用怎么说
  • 过期的增值税发票能用吗
  • 企业只有收入没有支出是否违规
  • 监督机关包括哪些
  • 环境保护税由什么部门负责征收管理
  • 在建工程预转固后又有工程款
  • 公司为职工缴纳的医保不计入账户吗
  • 工程结算收到钱的时候怎么做账?
  • 零申报的企业年末的利润表可以为零吗?
  • 公司开办期间账务处理
  • 债务利率的公式
  • mac怎么把通知栏固定
  • 进货折扣适用于什么条件
  • scheduler.exe - scheduler是什么进程 有何作用
  • 受限制用户怎么解决
  • 应收账款怎么做分录
  • 债券转换为普通债权
  • 其他业务收入产品包括
  • 作废的普通发票,顾客联拿不回来
  • 进项税额是
  • 体积最小的u盘
  • express框架使用
  • web无法运行
  • 一般纳税人简易计税
  • php获取文件类型
  • 食堂维修费用计什么科目
  • 纳税人未抄报税不能进行申报,怎么办
  • 如何用java写接口
  • 公司租赁个人车辆账务处理
  • SQLite中的WAL机制详细介绍
  • vue使用高德地图闪白屏
  • Python中的关键字
  • 土地使用发票
  • 员工意外伤害险入什么会计科目
  • 转让不动产为什么不能开全票发票
  • 销售净利率指标的计算是净利润与资产平均余额的比值
  • 收到的出口退税款需要并入利润总额吗
  • 合同里包括产品和服务吗
  • 人力公司开的代驾发票
  • 企业租入设备的会计分录怎么写
  • 二类银行卡转账能收多少钱
  • 营业执照过期多久不能审
  • 流动比率和速动比率过高说明什么
  • 连接mysql服务命令
  • 安装完xp系统直接蓝屏怎么办
  • rpm包安装的apache可以如何启动
  • win7 系统设置
  • mac怎么自定义桌面图标
  • mac电脑虚拟机怎么安装
  • mac屏幕共享软件
  • win10自带地图打不开
  • 电脑防火墙在哪里设置
  • win7系统点击桌面图标没反应
  • win8触摸板失灵怎么办
  • xp系统电源设置在哪里
  • js小球与边框碰撞反弹
  • jquery移除
  • 不需要背景
  • javascript如何
  • js获取tbody下的tr
  • textview hint
  • javascript parseInt 函数分析(转)
  • js设计模式有哪些
  • jquery中if语句
  • 向境外付款需要代扣代缴所得税吗
  • 职称申报密码找回
  • 税控盘如何查询上报汇总成功
  • 内蒙地税个人所得税标准
  • 贵州铜仁苗族自治区
  • 银行手续费所得税是否可以税前扣除
  • 分支机构如何变更为独立纳税人?
  • 营业税未达起征点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设