为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 sys.path详细介绍
Oct 17 Python
python简单的函数定义和用法实例
May 07 Python
在Python的Django框架中创建语言文件
Jul 27 Python
python抓取网页中链接的静态图片
Jan 29 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
Python简易版图书管理系统
Aug 12 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
构建高效的python requests长连接池详解
May 02 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
keras用auc做metrics以及早停实例
Jul 02 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP伪静态页面函数附使用方法
2008/06/20 PHP
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
JavaScript URL参数读取改进版
2009/01/16 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
python 测试实现方法
2008/12/24 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Django框架中方法的访问和查找
2015/07/15 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
Django models文件模型变更错误解决
2020/05/11 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
《草原的早晨》教学反思
2014/04/08 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书