首页 > 编程 > Python > 正文

在Python的web框架中编写创建日志的程序的教程

2020-02-23 00:54:02
字体:
来源:转载
供稿:网友

在Web开发中,后端代码写起来其实是相当容易的。

例如,我们编写一个REST API,用于创建一个Blog:

@api@post('/api/blogs')def api_create_blog():  i = ctx.request.input(name='', summary='', content='')  name = i.name.strip()  summary = i.summary.strip()  content = i.content.strip()  if not name:    raise APIValueError('name', 'name cannot be empty.')  if not summary:    raise APIValueError('summary', 'summary cannot be empty.')  if not content:    raise APIValueError('content', 'content cannot be empty.')  user = ctx.request.user  blog = Blog(user_id=user.id, user_name=user.name, name=name, summary=summary, content=content)  blog.insert()  return blog

编写后端Python代码不但很简单,而且非常容易测试,上面的API:api_create_blog()本身只是一个普通函数。

Web开发真正困难的地方在于编写前端页面。前端页面需要混合HTML、CSS和JavaScript,如果对这三者没有深入地掌握,编写的前端页面将很快难以维护。

更大的问题在于,前端页面通常是动态页面,也就是说,前端页面往往是由后端代码生成的。

生成前端页面最早的方式是拼接字符串:

s = '<html><head><title>' + title + '</title></head><body>' + body + '</body></html>'

显然这种方式完全不具备可维护性。所以有第二种模板方式:

<html><head>  <title>{{ title }}</title></head><body>  {{ body }}</body></html>

ASP、JSP、PHP等都是用这种模板方式生成前端页面。

如果在页面上大量使用JavaScript(事实上大部分页面都会),模板方式仍然会导致JavaScript代码与后端代码绑得非常紧密,以至于难以维护。其根本原因在于负责显示的HTML DOM模型与负责数据和交互的JavaScript代码没有分割清楚。

要编写可维护的前端代码绝非易事。和后端结合的MVC模式已经无法满足复杂页面逻辑的需要了,所以,新的MVVM:Model View ViewModel模式应运而生。

MVVM最早由微软提出来,它借鉴了桌面应用程序的MVC思想,在前端页面中,把Model用纯JavaScript对象表示:

<script>var blog = {  name: 'hello',  summary: 'this is summary',  content: 'this is content...'};</script>

View是纯HTML:

<form action="/api/blogs" method="post">  <input name="name">  <input name="summary">  <textarea name="content"></textarea>  <button type="submit">OK</button></form>

由于Model表示数据,View负责显示,两者做到了最大限度的分离。

把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表