【DW12月-推荐系统】Task04 前后端基础及交互

参考链接:https://github.com/datawhalechina/fun-rec/blob/master/docs/

一、前端基础

1.1 Web前端

Web前端网页主要由文字、图像和超链接等元素构成。除了这些元素,网页中还可以包含音频、视频以及Flash等。

1.1.1 什么是Web?

Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
Web前端主要是通HTML,CSSJS,ajax,DOM等前端技术,实现网站在客服端的正确显示及交互功能。

1.1.2 Web 标准构成

主要由结构(Structure)、表现(Presentation)和行为(Behavior)三个方面构成。
结构标准:结构用于对网页元素进行整理和分类,对于网页来说是最重要的一部分 。可以通过语义分析对其划分结构,具有了结构的内容,将更容易阅读。
表现标准:表现用于设置网页元素的版式、颜色、大小等外观样式,主要指的是CSS 。目的是让网页展现出灵活多样的显示效果。
行为标准:行为是指网页模型的定义及交互的编写 。让用户对网页进行操作,网页可以做出响应性的变化。
总的来说,Web标准有三层结构,分别是结构(HTML)、表现(CSS)和行为(JS),结构类似人的身体, 表现类似人的着装, 行为类似人的行为动作,理想状态下,他们三层都是独立的, 放到不同的文件里面。

HTML (Hyper Text Markup Language)

  • HTML指的是超文本标记语言,是用来描述网页的一种语言。
  • HTML 不是一种编程语言,而是一种标记语言 (markup language)。
  • 标记语言是一套标记标签 (markup tag)。

CSS(Cascading Style Sheets)

  • 通常称为CSS样式表或层叠样式表(级联样式表)。
  • 主要用于设置 HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。
  • 以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。

JS(JavaScript)

  • JS 是 Web 的编程语言,是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常常用来给HTML网页添加动态效果,从而实现人机交互的网页
  • 脚本语言不需要编译,在运行过程中由 js 解释器(js引擎)逐行来进行解释并执行。

1.2 Vue简介

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
Vue的生命周期
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这样用户在不同阶段可以添加自己的代码。

1.3 基于Vue的移动端H5项目

HTML5是第五代HTML的标准,H5是基于 HTML5 实现的,是当前互联网前端开发的主流语言。H5页面与普通web页面相比,最大的区别在于HTML5页面可以与不同大小的移动设备相匹配,支持市场上不同浏览器的兼容。
H5页面有以下特点:

  • 具有移动端自适应能力,H5页面会根据不同的手机屏幕尺寸进行适配,以达到不同屏幕的最佳显示效果。
  • 支持多媒体功能,支持背景音乐,视频播放等多种多媒体功能。
  • 页面素材预加载,为了保证整个页面的播放流畅,H5页面都搭配预加载功能,即用户点击之前就完成了页面的加载,保证阅读流畅性。
  • 支持滑动翻页,每个页面内容单独成页。
  • 使用滚动侦测特效,即滑动页面的同时,大量文字或图片会自动加载出来,造成一种动态美感。

随着移动互联网的发展,智能手机、平板等移动终端设备的普及,用户在移动端浏览的时间越来越长,H5页面传播渠道广,流量大,传播效率高,传播成本低的优势,同时H5页面制作搭配页面滑动、简单的文字、动态的图片动画以及妙趣横生的音乐及视频,给浏览者带来深刻的浏览体验。

二、flask简介及基础

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。
Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。

2.1 路由

在Flask中,路由是指用户请求的URL与视图函数之间的映射。Flask通过利用路由表将URL映射到对应的视图函数,根据视图函数的执行结果返回给WSGI服务器。路由表的内容是由开发者进行填充,主要有一下两个方式。

  • route装饰器:使用Flask应用实例的route装饰器将一个URL规则绑定到 一个视图函数上。
  • add_url_rule() :该方法直接会在路由表中注册映射关系。其实route装饰器内部也是通过调用add_url_rule()方法实现的路由注册。

2.2 请求,响应及会话

对于一个完整的HTTP请求,包括了来自客户端的请求对象(Request),服务器端的响应对象(Respose)和会话对象(Session)等。在Flask框架中,这些对象不仅可以在请求函数中使用,同时也可以在模板中使用。
请求对象 request
在Flask包中,可以直接引入request对象,其中包含Form,args ,Cookies ,files 等属性。Form 是一个字典对象,包含表单当中所有参数及其值的键和值对;args 是解析查询字符串的内容,它是问号(?)之后的URL的一部分,当使用get请求时,通过URL传递参数时可以通过args属性获取;Cookies 是用来保存Cookie名称和值的字典对象;files 属性和上传文件有关的数据。
响应对象 response
如果视图函数想向前端返回数据,必须是Response的对象, 主要将返回数据的几种方式:

  • 视图函数 return 多个值;
  • 通过直接创建Response对象,配置其参数;
  • 使用make_response 函数可以传递三个参数 第一个是一个字符串,第二个传状态码,第三个传请求头。

2.3 重定向与错误处理

重定向
当一个请求过来后可能还需要在请求另一个视图函数才能达到目的,那么就可以调用redirect(location, code=302, Response=None)函数指定重定向页面。
错误处理
当请求或服务器出现错误的时候,可以使用 errorhandler() 装饰器。

2.4 SQLAlchemy

SQLAlchemy 是一个功能强大的Python ORM 工具包,为应用程序开发人员提供了SQL的全部功能和和ORM操作。其中ORM(Object Relation Mapping)指的是将对象参数映射到底层RDBMS表结构的技术,ORM API提供了执行CRUD操作的方法,不需要程序员编写原始SQL语句。

三、前后端交互

3.1 用户注册登录

为了能够对用户进行千人千面的推荐,因此需要每个使用该系统的人都需要明确先进行注册登入,为每个用户生成唯一的用户id,根据用户的历史行为,实现对用户进行个性化推荐的效果。
** 注册部分**
注册部分主要是记录用户的一些基础属性,并将用户的注册信息写入msyql表当中。
登录部分
用户登陆部分,前端通过将输入的账号密码通过POST请求传给 /recsys/login,通过UserAction().user_is_exist()方法查询数据库中的用户名或者密码是否存在,其中1表示账号密码正确,2表示密码错误,0表示用户不存在。

3.2 推荐页列表

image.png

该部分的主要逻辑是前端通过请求 "/recsys/rec_list" 接口,后端通过前端传递过来的用户姓名,从数据库中获取用户id,再根据用户id去推荐服务(recsys_server)中获取到推荐列表。

3.3 热门推荐页

热门推荐页部分,前端通过请求'/recsys/hot_list'接口,通过传递用户姓名和当前页号来获取热门新闻列表。主要的逻辑和获取推荐页相同,区别在于热门新闻信息主要是通过推荐服务(recsys_server)中的get_hot_list()方法来获取到热门新闻推荐列表。

3.4 新闻详情页

image.png

该部分主要包含一些新闻的详细信息,其中还有两个按钮,用于收集用户的显性反馈,用户可以根据自己对该文章的喜好程度进行喜欢和收藏的反馈内容。

如果用户对该新闻之前点击过喜欢或收藏,再次点击该新闻应该在喜欢或收藏按钮应该是点亮状态,因此还需要根据mysql中再次查询用户与该新闻是否存在记录,并将结果返回给前端,将其进行点亮展示。可以采用likes和collections这两个字段,通过True,False来判断用户对该文章之前是否点击过喜欢或收藏。

3.5 用户的行为

用户在看新闻时主要会留下三种用户行为:一是阅读,即用户在点击一篇新闻的详细页时,用户产生的行为;二是喜欢,在新闻详情页下面会存在喜欢按钮,用户可以通过点击按钮触发系统记录该行为;三是收藏,和喜欢行为同理,需要通过用户主动的方式来触发。

因此在用户点进一篇新闻的详情页时候,前端会发送一个请求,并给后端传递一个json格式数据;在点击喜欢或收藏按钮的时候产生一个请求,并发送json数据;通过前端的传递的数据,后端对应的接口可以通过传递的参数对用户行为进行记录。

四、总结

本章节通过介绍前端和后端的交互,让我明白了整个推荐系统的运行模式,同时了解遇到什么样的问题应该找哪一块才能得到解决。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容