项目概述
使用flask模板语法实现前端界面的继承,有网站首页和每条新闻详情页,以及热门新闻的展示。接着有用户中心管理界面以及另一个全新板块—管理员板块,管理员登录,管理员首页。以上即本项目的架构,书写思路为按蓝图板块进行。
index
China Daily的首页,(其实我也不知道什么时候讲模板的继承,因为你不分析完index和detail,你怎么抽取相同的部分),首页有分类新闻,分类包括(最新,股市,商品,财经)默认显示最新一类,点击其他分类即跳转到查询到的相关新闻。所以首页的第二大板块就是新闻列表展示,并且要做成下拉实现分页加载。第三个板块是热门新闻排行,第四个板块是右上角的用户信息,如果没登录显示登录和注册表单,如果登录了显示用户信息,包括头像、用户名,并且它们上面有跳转至用户中心的超链接。
news
China Daily的新闻详情页,(说完它的几大板块,我就可以把它和index的板块结合起来,抽取相同部分,做成base)新闻详情页第一大板块是前端拼出来的新闻详情,包括标题、创建时间、来源、作者、内容。第二大板块是评论板块,这里面复杂的东西可多了,父级评论,评论点赞。第三大板块是作者板块,这里的逻辑也多,比如你关注了此篇文章的作者,你刷他的新文章,那么显示已关注,而不是还可以再次关注,同样,你刷自己的新闻,不能自己关注自己,以及你关注一个没关注过的作者,前端的粉丝数+1,后端数据库里info_user_fans更新数据。第四大板块是热门新闻排行。
插播一个base.html
鉴于index和detail的共同之处,为了优雅,抽取相同的部分作为base,base包含6大模块,(titileblock, headerblock,footerblock,contentblock,rankblock,authorblock),index继承base,修改的有titileblock,headerblock,contentblock,news继承base,修改titileblock,contentblock。
profile
China Daily的用户中心,包括个人资料,头像修改,密码修改,(这个为啥不做到一起,像新闻发布,整个form表单,我是不是又发现可以优化的地方了(但我不想优化,哈哈哈哈,突然想到徐志摩的“但我不能放歌,悄悄是别离的笙箫,夏虫也为我沉默。沉默是今晚的康桥!”))我的关注,我的收藏,新闻发布,新闻列表(即自己发过的所有的新闻)。profile的路由规则为user/info,也可以继承base模版,具体来说,修改titleblock,contentblock,rankblock。
admin
China Daily的管理员模块,其实这儿可以优化,除了/admin/login可以登录,普通用户使用的右上角的登录表单,admin就不能登上?然后大戏是/admin/index,相当于user/info的用户中心,功能分为两大方向,一是用户管理(包括用户统计,用户列表),二是新闻管理(包括新闻审核,新闻编辑,新闻分类)。
passport
China Daily的登录验证模块,正好,我刚才不是先优化管理员登录,其实我认为管理员单独增加一个login.html,然后等着admin里的admin_login()视图函数来渲染挺洋气官方的,但是如果能做成管理员也能通过普通用户登录方式登录成功最好。(这个问题暂时搁置)
passport的视图函数包括image_code(),sms_code(),register(),login(),logout(),打一段可能不如把视图函数名摆上来,即注册登录表单的图形验证码,短信验证码。注册完成后的登录,登出。
以上就是5大蓝图板块,就像架构一样,现在目录已经清晰了。下篇博客进入更深层的思考,哪些功能是逻辑相似,代码可复用的。