为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构造自定义方法来美化字典结构输出的示例
Jun 16 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
python实现NB-IoT模块远程控制
Jun 20 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 Python
pytorch损失反向传播后梯度为none的问题
May 12 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递归删除指定文件夹的方法小结
2015/04/20 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
可靠的数据流传输TCP
2016/03/15 面试题
大四学年自我鉴定
2013/11/13 职场文书
高一新生军训感言
2014/03/02 职场文书
师范类求职信
2014/06/21 职场文书
端午节活动总结
2014/08/26 职场文书
党章培训心得体会
2014/09/04 职场文书
开学典礼校长致辞
2015/07/29 职场文书
运动会开幕式致辞
2015/07/29 职场文书
2016年五一促销广告语
2016/01/28 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技