为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通用循环的构造方法实例分析
Dec 19 Python
浅谈Python的条件判断语句if/else语句
Mar 21 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
Python中调用其他程序的方式详解
Aug 06 Python
Pytorch之view及view_as使用详解
Dec 31 Python
Python基础之高级变量类型实例详解
Jan 03 Python
python deque模块简单使用代码实例
Mar 12 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
Python如何执行精确的浮点数运算
Jul 31 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 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 文件类型判断代码
2009/03/13 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
laravel入门知识点整理
2020/09/15 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
python执行外部程序的常用方法小结
2015/03/21 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
浅谈Python爬虫基本套路
2019/03/25 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
捐书活动总结
2014/05/04 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android