pythonweb程序设计_python,web编程(一)

自学web方向已经很久了,一直没有弄清楚整个web开发的底层概念,秉着先知道如何做,再知道为什么这么做的原则,之前一直都是以实现某个功能为主去学习。现在为了弄清整个web开发的概念,看了廖大大的教程再结合之前自己接触的web开发方面,顿时有一种豁然开朗的感觉,现在决定跟着教程走一遍。先附上教程链接:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432170876125c96f6cc10717484baea0c6da9bee2be4000

首先一个web应用的本质就是先由浏览器发送一个http请求给服务器,服务器收到请求后生成一个HTML文档然后将文档加入body发回给浏览器,浏览器收到信息后显示body。一般解析请求,接受请求,发送请求这些行为都是由apache,IIS,Nginx来做的,我们要做的就是生成html,这样就是一个WSGI接口。

先搭建开发环境,根据教程使用的是python3+mysql,安装相应的包

pip install aiohttp #异步处理框架

pip install jinja2 #模板引擎

pip install aiomysql #异步mysql驱动

整个webapp的骨架,就是通过异步IO,处理http请求,整个webapp监听着端口的请求,每次服务器端接收到一个请求就建立一个子进程去响应这个请求,提取本地的html文件放入返回的http请求中的body中。而整个html文件的生成又涉及到MVC架构,V就是VIEW层,负责展示HTML,C是控制层,负责调度url,M是model层,负责处理数据。C通过URL调度model和view,生成一个html页面。现在先根据教程写一个web骨架:

#!/usr/bin/env python#-*- coding:utf-8 -*-

import logging; logging.basicConfig(level=logging.INFO)importasyncio, os, json, timefrom datetime importdatetimefrom aiohttp importwebdefindex(request):return web.Response(body=b'

Awesome

')

@asyncio.coroutinedefinit(loop):

app= web.Application(loop=loop)

app.router.add_route('GET','/',index)

srv= yield from loop.create_server(app.make_handler(),'127.0.0.1',9000)

logging.info('server started at http://127.0.0.1:9000...')returnsrv

loop=asyncio.get_event_loop()

loop.run_until_complete(init(loop))

loop.run_forever()

logging模块负责生成日志,index函数负责响应http请求并返回一个html。aiohttp则是基于asyncio实现的HTTP框架。通过装饰器@asyncio.coroutine将一个生成器扔给eventloop去执行,这个eventloop监听本机ip的9000端口不断接受请求进行处理。并通过add_route方法设定url为http://127.0.0.1:9000,将index返回的html显示在这个url上。这是我理解的整个web骨架的原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值