Day 14 - 完成Web App

    在Web App框架和基本流程跑通后,剩下的工作全部是体力活了:在Debug开发模式下完成后端所有API、前端所有页面。我们需要做的事情包括:

    把当前用户绑定到 request 上,并对URL manage 进行拦截,检查当前用户是否是管理员身份:

    @asyncio.coroutine

    def authfactory(app, handler):

    @asyncio.coroutine

    def auth(request):

    logging.info('check user: %s %s' % (request.method, request.path))

    request.user = None

    cookiestr = request.cookies.get(COOKIENAME)

    if cookiestr:

    user = yield from cookie2user(cookiestr)

    if user:

    logging.info('set current user: %s' % user.email)

    request._user
    = user

    if request.path.startswith('manage') and (request.__user
    is None or not request.__user
    .admin):

    return web.HTTPFound('/signin')

    return (yield from handler(request))

    return auth

    后端API包括:

    • 获取日志:GET apiblogs

    • 创建日志:POST apiblogs

    • 修改日志:POST apiblogs/:blog_id

    • 删除日志:POST apiblogs/:blog_id/delete

    • 获取评论:GET apicomments

    • 创建评论:POST apiblogs/:blog_id/comments

    • 删除评论:POST apicomments/:comment_id/delete

    • 创建新用户:POST apiusers

    • 获取用户:GET apiusers

    管理页面包括:

    • 评论列表页:GET managecomments

    • 日志列表页:GET manageblogs

    • 创建日志页:GET manageblogs/create

    • 修改日志页:GET manageblogs/

    • 用户列表页:GET manageusers

    用户浏览页面包括:

    • 注册页:GET /register

    • 登录页:GET /signin

    • 注销页:GET /signout

    • 首页:GET /

    • 日志详情页:GET blog:blog_id

    把所有的功能实现,我们第一个Web App就宣告完成!