为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 17 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
python 剪切移动文件的实现代码
Aug 02 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
PHP关联链接常用代码
2012/11/05 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
tensorflow 实现数据类型转换
2020/02/17 Python
Python中私有属性的定义方式
2020/03/05 Python
python实现最速下降法
2020/03/24 Python
致400米运动员广播稿
2014/02/07 职场文书
电视购物广告词
2014/03/19 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
汽车销售合同文本
2019/08/08 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
Python音乐爬虫完美绕过反爬
2021/08/30 Python
yolov5返回坐标的方法实例
2022/03/17 Python