为Python的web框架编写MVC配置来使其运行的教程

yipeiwu_com5年前Python基础

现在,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表添加几条记录,然后再访问:

201543094726497.jpg (401×274)

相关文章

Python中的XML库4Suite Server的介绍

在继续阅读本文之前,您务必要对我们在本专栏中将要讨论的一些技术有所了解。我们要使用的技术包括:可扩展的样式表语言转换(Extensible Stylesheet Language Tra...

pyqt5简介及安装方法介绍

pyqt5简介及安装方法介绍

本文研究的主要是pyqt5简介及安装方法介绍的有关内容,具体如下。 pyqt5介绍 pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。本教程使用...

将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例

在神经网络计算过程中,经常会遇到需要将矩阵中的某些元素取出并且单独进行计算的步骤(例如MLE,Attention等操作)。那么在 tensorflow 的 Variable 类型中如何做...

8段用于数据清洗Python代码(小结)

最近,大数据工程师Kin Lim Lee在Medium上发表了一篇文章,介绍了8个用于数据清洗的Python代码。 数据清洗,是进行数据分析和使用数据训练模型的必经之路,也是最耗费数据科...

Python的SimpleHTTPServer模块用处及使用方法简介

Python的SimpleHTTPServer模块用处及使用方法简介

  搭建FTP,或者是搭建网络文件系统,这些方法都能够实现Linux的目录共享。但是FTP和网络文件系统的功能都过于强大,因此它们都有一些不够方便的地方。比如你想快速共享Linux系统的...