Python项目WebApp实战之六——前端框架及API

前端页面

对于复杂的前端页面来说,最好使用一套CSS框架来完成基本的布局和样式。项目中使用uikit框架。

所有的静态资源文件统一放到static目录下,并按照类别归类。

由于页面可能存在很多相同的部分,比如页眉和页脚。常见的模板引擎已经考虑到了页面上重复的HTML部分复用问题。

一般有两种实现方式,一种是include。比如:

这样,相同的部分incheader.html和incfooter.html就可以共享。但是include方法不利于页面整体结构的维护。

还有另一种是通过“继承”的方式,编写一个父模板,定义一些可替换的块。然后编写多个子模板,替换父模板中的block。

一旦编写好了父模板,编写子模板非常容易。

编写首页

首先是编写一个父模板, 。包含一些block,比如meta块,标题块, 标签中插入的JavaScript代码,引入的文件块等。最重要的就是content,页面内容块。

然后就可以编写一个blog.html页面,显示博客文章的列表。

相应的URL的处理函数需要修改为:

Blog的创建日期显示的是一个浮点数,因为它是由这段模板渲染出来的:

解决方法是通过jinja2的filter(过滤器),把一个浮点数转换成日期字符串。编写一个datetime的filter,用法如下:

filter需要在初始化jinja2时设置。相关代码如下:

为移动应用开发api

REST就是一种设计API的模式。最常用的数据格式是JSON。

一个API也是一个URL的处理函数,我们希望能直接通过一个@api来把函数变成JSON格式的REST API,这样,获取注册用户可以用一个API实现如下:

只要返回一个dict,后续的response这个middleware就可以把结果序列化为JSON并返回。

我们需要对Error进行处理,因此定义一个APIError,这种Error是指API调用时发生了逻辑错误(比如用户不存在),其他的Error视为Bug,返回的错误代码为internalerror。

客户端调用API时,必须通过错误代码来区分API调用是否成功。错误代码是用来告诉调用者出错的原因。很多API用一个整数表示错误码,这种方式很难维护错误码,客户端拿到错误码还需要查表得知错误信息。更好的方式是用字符串表示错误代码,不需要看文档也能猜到错误原因。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180420G08C8700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励