为Python的web框架编写MVC配置来使其运行的教程


Posted in Python onApril 30, 2015

现在,ORM框架、Web框架和配置都已就绪,我们可以开始编写一个最简单的MVC,把它们全部启动起来。

通过Web框架的@decorator和ORM框架的Model支持,可以很容易地编写一个处理首页URL的函数:

# urls.py
from transwarp.web import get, view
from models import User, Blog, Comment

@view('test_users.html')
@get('/')
def test_users():
  users = User.find_all()
  return dict(users=users)

@view指定的模板文件是test_users.html,所以我们在模板的根目录templates下创建test_users.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Test users - Awesome Python Webapp</title>
</head>
<body>
  <h1>All users</h1>
  {% for u in users %}
  <p>{{ u.name }} / {{ u.email }}</p>
  {% endfor %}
</body>
</html>

接下来,我们创建一个Web App的启动文件wsgiapp.py,负责初始化数据库、初始化Web框架,然后加载urls.py,最后启动Web服务:

# wsgiapp.py
import logging; logging.basicConfig(level=logging.INFO)
import os

from transwarp import db
from transwarp.web import WSGIApplication, Jinja2TemplateEngine

from config import configs

# 初始化数据库:
db.create_engine(**configs.db)

# 创建一个WSGIApplication:
wsgi = WSGIApplication(os.path.dirname(os.path.abspath(__file__)))
# 初始化jinja2模板引擎:
template_engine = Jinja2TemplateEngine(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates'))
wsgi.template_engine = template_engine

# 加载带有@get/@post的URL处理函数:
import urls
wsgi.add_module(urls)

# 在9000端口上启动本地测试服务器:
if __name__ == '__main__':
  wsgi.run(9000)

如果一切顺利,可以用命令行启动Web服务器:

$ python wsgiapp.py

然后,在浏览器中访问http://localhost:9000/。

如果数据库的users表什么内容也没有,你就无法在浏览器中看到循环输出的内容。可以自己在MySQL的命令行里给users表添加几条记录,然后再访问:

为Python的web框架编写MVC配置来使其运行的教程

Python 相关文章推荐
Python socket编程实例详解
May 27 Python
Python编程中的异常处理教程
Aug 21 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
Python 创建空的list,以及append用法讲解
May 04 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
Python根据成绩分析系统浅析
Feb 11 Python
Django+Xadmin构建项目的方法步骤
Mar 06 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 Python
python中reload重载实例用法
Dec 15 Python
在Python的web框架中配置app的教程
Apr 30 #Python
python实现从ftp服务器下载文件的方法
Apr 30 #Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 #Python
编写Python的web框架中的Model的教程
Apr 29 #Python
python获取本地计算机名字的方法
Apr 29 #Python
Python中编写ORM框架的入门指引
Apr 29 #Python
python获取本机mac地址和ip地址的方法
Apr 29 #Python
You might like
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
4.与数据库的连接
2006/10/09 PHP
深入解析php之sphinx
2013/05/15 PHP
基于PHP文件操作的详解
2013/06/05 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
Django文件存储 默认存储系统解析
2019/08/02 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
世界汽车零件:World Car Parts
2019/09/04 全球购物
入党自我鉴定
2014/03/25 职场文书
PyTorch的Debug指南
2021/05/07 Python
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python