为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遍历类中所有成员的方法
Mar 18 Python
Python编码爬坑指南(必看)
Jun 10 Python
通过源码分析Python中的切片赋值
May 08 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
用Python3创建httpServer的简单方法
Jun 04 Python
python-str,list,set间的转换实例
Jun 27 Python
对django 模型 unique together的示例讲解
Aug 06 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
python SOCKET编程基础入门
Feb 27 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 mssql 数据库分页SQL语句
2008/12/16 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
phpStorm2020 注册码
2020/09/17 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
vue实现分页栏效果
2019/06/28 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
法律专业个人实习自我鉴定
2013/09/23 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
项目投资意向书
2014/04/01 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
公司财务管理制度
2015/08/04 职场文书