1. Day 14 - 完成Web App
    2. 阅读: 61720
    3. Web App框架和基本流程跑通后,剩下的工作全部是体力活了:在Debug开发模式下完成后端所有API、前端所有页面。我们需要做的事情包括:
    4. 把当前用户绑定到request上,并对URL/manage/进行拦截,检查当前用户是否是管理员身份:
    5. @asyncio.coroutine
    6. def auth_factory(app, handler):
    7. @asyncio.coroutine
    8. def auth(request):
    9. logging.info('check user: %s %s' % (request.method, request.path))
    10. request.__user__ = None
    11. cookie_str = request.cookies.get(COOKIE_NAME)
    12. if cookie_str:
    13. user = yield from cookie2user(cookie_str)
    14. if user:
    15. logging.info('set current user: %s' % user.email)
    16. request.__user__ = user
    17. if request.path.startswith('/manage/') and (request.__user__ is None or not request.__user__.admin):
    18. return web.HTTPFound('/signin')
    19. return (yield from handler(request))
    20. return auth
    21. 后端API包括:
    22. 获取日志:GET /api/blogs
    23. 创建日志:POST /api/blogs
    24. 修改日志:POST /api/blogs/:blog_id
    25. 删除日志:POST /api/blogs/:blog_id/delete
    26. 获取评论:GET /api/comments
    27. 创建评论:POST /api/blogs/:blog_id/comments
    28. 删除评论:POST /api/comments/:comment_id/delete
    29. 创建新用户:POST /api/users
    30. 获取用户:GET /api/users
    31. 管理页面包括:
    32. 评论列表页:GET /manage/comments
    33. 日志列表页:GET /manage/blogs
    34. 创建日志页:GET /manage/blogs/create
    35. 修改日志页:GET /manage/blogs/
    36. 用户列表页:GET /manage/users
    37. 用户浏览页面包括:
    38. 注册页:GET /register
    39. 登录页:GET /signin
    40. 注销页:GET /signout
    41. 首页:GET /
    42. 日志详情页:GET /blog/:blog_id
    43. 把所有的功能实现,我们第一个Web App就宣告完成!
    44. 参考源码
    45. day-14