Python3教程Web开发实战梳理-day1+day2(开发环境与基本骨架)

前言

跟随廖雪峰老师的教程学习Python端断断续续有一个学期了,中间停了好几次,好在小学期和假期加了把劲,努力追上了进度。总体感觉是前面比较简单,后面越来越难。Python以简洁著称,而简洁则要求他有很高的抽象性,所以对于习惯了C语言操作底层的人来说,思维转换非常重要。到了实战这一部分,确实会有不少代码读都读不懂,更不用说写,所以还是想写这样一篇博文来梳理一下整体的脉络。

按照教程以Day为单位进行梳理

Day1:搭建开发环境

安装异步框架:pip install aiohttp
前端模板引擎:pip install jinja2
MySql的Python异步驱动:pip install aiomysql

创建项目目录

    awesome-python3-webapp/  <-- 根目录
    |
    +- backup/               <-- 备份目录
    |
    +- conf/                 <-- 配置文件
    |
    +- dist/                 <-- 打包目录
    |
    +- www/                  <-- Web目录,存放.py文件
    |  |
    |  +- static/            <-- 存放静态文件
    |  |
    |  +- templates/         <-- 存放模板文件
    |
    +- ios/                  <-- 存放iOS App工程
    |
    +- LICENSE               <-- 代码LICENSE

虽然最后代码都写到了www文件夹里,但至少这个目录看起了还是蛮科学的。。。
最后,记得为我们的工程文件夹建立Git仓库并同步至Github

Day2:编写Web App的骨架

我们的Web App建立在asyncio的基础上,因此用aiohttp写一个基本的app.py(asyncio是Python提供的一个异步IO框架)

import logging; logging.basicConfig(level=logging.INFO)

import asyncio, os, json, time
from datetime import datetime

from aiohttp import web

def index(request):
    return web.Response(body=b'<h1>Awesome</h1>')

@asyncio.coroutine
def init(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/', index)   #对于首页的 / 请求进行相应,响应方法为上面的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...')
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

@asyncio.coroutine把一个generator标记为coroutine类型,然后,我们就把这个coroutine扔到EventLoop中执行。在Python最新的语法中,可以用async替换@asyncio.coroutine,用await替换yield from,效果相同。
上面的程序中,我们利用aiohttp提供的框架创建了一个简单的服务器,监听9000端口的HTTP请求,这是最基本的操作,后续工作都将在这个服务器上进行。

猜你喜欢

转载自blog.csdn.net/josephpai/article/details/76020075
今日推荐