为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实现斐波那契递归函数的方法
Sep 08 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
Python简单生成随机数的方法示例
Mar 31 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
python最长回文串算法
Jun 04 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
python自动化之Ansible的安装教程
Jun 13 Python
python issubclass 和 isinstance函数
Jul 25 Python
python实现多线程端口扫描
Aug 31 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
python3 实现函数写文件路径的正确方法
Nov 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实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
Jquery选中或取消radio示例
2013/09/29 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
详解Django中的过滤器
2015/07/16 Python
Python循环语句之break与continue的用法
2015/10/14 Python
使用python实现knn算法
2017/12/20 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python关于调用函数外的变量实例
2019/12/26 Python
利用python实现逐步回归
2020/02/24 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
python Matplotlib模块的使用
2020/09/16 Python
HTML5标签小集
2011/08/02 HTML / CSS
2014年学校总务处工作总结
2014/12/08 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
小型婚礼主持词
2015/06/30 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏