为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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
python处理图片之PIL模块简单使用方法
May 11 Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 Python
Python性能分析工具Profile使用实例
Nov 19 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
django models里数据表插入数据id自增操作
Jul 15 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 Python
python 单机五子棋对战游戏
Apr 28 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
PHP 正则表达式小结
2015/02/12 PHP
php邮件发送的两种方式
2020/04/28 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
面试常见的js算法题
2017/03/23 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
Python中字符串的处理技巧分享
2016/09/17 Python
Python生成数字图片代码分享
2017/10/31 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
如何判断计算机可能已经中马
2013/03/22 面试题
金融专业毕业生自荐信
2014/06/26 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
团代会开幕词
2015/01/28 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
java版 简单三子棋游戏
2022/05/04 Java/Android