为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 多进程通信模块的简单实现
Feb 20 Python
Python实用日期时间处理方法汇总
May 09 Python
python生成验证码图片代码分享
Jan 28 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
详解python中的模块及包导入
Aug 30 Python
python如何使用Redis构建分布式锁
Jan 16 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
python实现AdaBoost算法的示例
Oct 03 Python
python Gabor滤波器讲解
Oct 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(7) php 字符串相关应用
2010/03/05 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
vue组件生命周期详解
2017/11/07 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
es6中reduce的基本使用方法
2019/09/10 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
思想专业自荐信范文
2013/12/25 职场文书
绩效管理实施方案
2014/03/19 职场文书
求职个人评价范文
2014/04/09 职场文书
2019同学聚会主持词
2019/05/06 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python