为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中实现三目运算的方法
Jun 21 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
Python hashlib模块用法实例分析
Jun 12 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
基于python调用psutil模块过程解析
Dec 20 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
python 伯努利分布详解
Feb 25 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
python 基于opencv去除图片阴影
Jan 26 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
php错误、异常处理机制(补充)
2012/05/07 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
chrome调试javascript详解
2015/10/21 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python中加背景音乐如何操作
2020/07/19 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
小学清明节活动方案
2014/03/08 职场文书
党风廉政承诺书
2014/03/27 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
小学大队长竞选稿
2015/11/20 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL