現在,ORM框架、Web框架和配置都已就緒,我們可以開始編寫一個最簡單的MVC,把它們全部啟動起來。
通過Web框架的@decorator和ORM框架的Model支持,可以很容易地編寫一個處理首頁URL的函數:
1
2
3
4
5
6
7
8
9
|
# 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" /> </ 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服務:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# 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服務器:
1
|
$ python wsgiapp.py |
然后,在瀏覽器中訪問http://localhost:9000/。
如果數據庫的users表什么內容也沒有,你就無法在瀏覽器中看到循環輸出的內容。可以自己在MySQL的命令行里給users表添加幾條記錄,然后再訪問: