01 Web框架介绍
一、Web框架本质
- 所有的web应用程序本质上都是socket,用户的浏览器其实就是一个socket客户端。
- python中常用的web框架有:
- Django
- Flask
- web.py
- WSGI(web server gateway interface)定义了使用python编程的web app和web server之间的接口格式,实现了服务端与客户端的解耦。
- pytho标准库提供的独立WSGI服务器称为wsgired。
二、利用wsgrired自定义Web框架
#!/usr/local/bin/python3
#-*-coding:utf-8 -*-
#Author:Felix Song ;Environment:pycharm 5.0.3(python3.6) #用python标准库开发一个自己的web框架
from wsgiref.simple_server import make_server #第二步改造,获取conf中的内容
import conf_url def RunServer(environ,start_response):
start_response('200 OK',[('Content-Type','text/html')])
#第一步,获取用户URL,debug模式下,在start_response加断点,然后浏览器访问在Variables下的environ中找
userUrl = environ['PATH_INFO']
print(userUrl)
urlpatterns = conf_url.routes() #第三步改造
#第二步改造
func = None
# for item in conf_url.url: #第三步注释掉
for item in urlpatterns:#第三步改造
if item[0] == userUrl:
func = item[1]
break if func:
return func()
else:
return [bytes('<h1>404</h1>',encoding='utf-8')] '''
#第二步,根据URL输入的不同返回不同的值,但是如果页面很多用if else就比较费劲了...改造下,新建一个conf.py在里边定义所有的URL模型
if userUrl == '/index/':
return [bytes('<h1>index</h1>',encoding='utf-8')]
elif userUrl == '/login/':
return [bytes('<h1>login</h1>',encoding='utf-8')]
elif userUrl == '/logout/':
return [bytes('<h1>logout</h1>',encoding='utf-8')]
else:
return [bytes('<h1>404 no found</h1>',encoding='utf-8')]
''' if __name__ == '__main__':
httpd = make_server('',8000,RunServer)
print('Serving http on port 8000...')
httpd.serve_forever()
server
#!/usr/local/bin/python3
#-*-coding:utf-8 -*-
#Author:Felix Song ;Environment:pycharm 5.0.3(python3.6) def index():
return [bytes('<h1>index</h1>',encoding='utf-8')]
# return [b'<h1>index</h1>']
def login():
return [bytes('<h1>login</h1>',encoding='utf-8')] #第三步改造,路由系统
def routes():
urlpatterns = (('/index',index),('/index',index),('/index',index))
return urlpatterns # #第二步改造,网页对照表
# url = (
# ('/index',index),
# ('/index',index),
# ('/index',index),
# )
conf_url

三、MVC框架(代码的归类)
Model包:对数据库操作
View包:存放html文件
login.html:
Controller包:业务逻辑处理
Account.py:账户相关控制放在这里
Admin.py:后台管理
四、MTV框架(代码的归类)
Model包:对数据库的操作
Template包:存放html文件
View包:业务逻辑
参考:
http://www.cnblogs.com/wupeiqi/articles/4491246.html
http://www.cnblogs.com/wupeiqi/articles/5237672.html
01 Web框架介绍的更多相关文章
- WEB框架介绍
python web框架分类 自己实现socket Tornado 借助wsgi实现socket Django:因为Django用的wsgi,所以不用操作socket. wsgi有很多,如下, MV ...
- python web框架介绍对比
Django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django.要说Django是Python框架里最好的,有人同意也有人 坚决反对,但说Django的文档最完善.市场占 ...
- Flask基础(01)-->Flask框架介绍
什么是Flask? 说白了,Flask就是一种web框架 在python中常用的框架有 flask django tornado 什么又是web框架呢? 为什么要使用web框架呢? 增强扩展性和稳定 ...
- web框架django初探
Web框架介绍 一般会分为两部分:服务器程序和应用程序.服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理.应用程序则负责具体的逻辑处理.为了方便应用程序的开发,就出 ...
- [转载] 新兵训练营系列课程——平台服务部署及Web框架
原文: http://weibo.com/p/1001643875679132642345 大纲 微博平台主要负责微博基础功能.接下来将会介绍 平台的作用,以及服务提供的形式 平台Web服务的部署 平 ...
- 自定义python web框架
-- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ -- bxslider http://bxsli ...
- 【python之路41】web框架
一.web框架介绍 一共有两种web框架 1.既包含socket又能逻辑处理 tornado框架 2.只能处理逻辑 Django bottle flask 二.web框架的本质 众所周知,对于所有的 ...
- Go语言Web框架gwk介绍4
Go语言Web框架gwk介绍 (四) 事件 gwk支持事件系统,但并没有硬编码有哪些事件,而是采用了比较松散的定义方式. 订阅事件有两种方式: 调用On函数或者OnFunc函数 func On(m ...
- Go语言Web框架gwk介绍 3
Go语言Web框架gwk介绍 (三) 上一篇忘了ChanResult ChanResult 可以用来模拟BigPipe,定义如下 type ChanResult struct { Wait syn ...
随机推荐
- MySQL索引原理与慢查询
=========索引原理与慢查询======= 阅读目录 - 一.介绍 - 二.索引的原理 - 三.索引的数据结构 - 四.聚集索引与辅助索引 - 五.MyS ...
- 用 scp 命令通过 SSH 互传文件
上传单个文件到远程服务器 命令格式 scp [/path/local_dir/filename] [username@servername:/path/remote_dir] 上传本地的 vimrc ...
- RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置
上一篇博客 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 中,我们成功的安装好了RabbitMQ环境,并通过一个Java客户端示例了解了用生产者来发布消息,用 ...
- 《springcloud 二》微服务动态网关,网关集群
动态网关 实际上是网关和分布式配置中心的整合,通过post手动刷新,生效 动态网关 传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.结合整合SpringCloud C ...
- java中接口(interface)和虚基类(abstract class)的区别
在Java语言中,abstract class和interface是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的面向对象能力.abstract class和interfa ...
- 用TextWriterTraceListener实现建议log文件记录
log4net之类3方组件确实很方便,但是想写个小小的demo之类的程序,有点用不起啊. 微软自带的TraceListener要实现一个简易的日志帮助类还是很简单的,直接上代码,自己备用,也希望对同样 ...
- JAVA代码之斗地主发牌
理解很好理解,关键是思路 按照斗地主的规则,完成洗牌发牌的动作: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. ...
- SQL函数TIMEDIFF在Java程序中使用报错的问题分析
需求背景 (读者可略过)司机每天从早到晚都会去到不同的自动售货机上补货,而且补货次数和路线等也是因人而异,补货依据是由系统优化并指派.但是目前系统还无法实施有效指挥和优良的补货策略,司机的补货活动因此 ...
- [转] java实现https请求
package com.lichmama.test.util; import java.io.ByteArrayOutputStream; import java.io.IOException; im ...
- ParallelsDesktop安装DOS7.1并与MAC共享文件
ParallelsDesktop安装DOS7.1并与MAC共享文件 Table of Contents 1. 在Parallels Desktop中安装DOS7.1 2. 配置与Mac共享文件 1 在 ...