博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础-项目-day 7 mvc
阅读量:4145 次
发布时间:2019-05-25

本文共 4674 字,大约阅读时间需要 15 分钟。

一、数据准备

事先建立好mysql数据和插入数据,我使用图形化界面创建数据库和插入数据

image

如果希望用mysql的gui工具推荐

MySQL 的 GUI 工具-Navicat

具体请查看廖老师的网站介绍

二、MVC 核心代码

1.界面

file:///D:/python3-webapp-Su/www/templates/home.html

    
Test users - Python Webapp

All users

{% for u in users %}

{

{ u.name }} / {
{ u.email }}

{% endfor %}

2.启动Web服务

=============================# app.pyasync def init(loop):    await orm.create_pool(loop=loop, host='127.0.0.1', port=3306, user='root', password='', db='sufadi')    app = web.Application(loop=loop, middlewares=[        logger_factory, response_factory    ])    # 通过router的指定的方法可以把请求的链接和对应的处理函数关联在    init_jinja2(app, filters=dict(datetime=datetime_filter))    add_routes(app, 'handlers')    add_static(app)    # 运行web服务,服务器启动后,有用户在浏览器访?,就可以做出对应的响应    # 127.0.0.1 本机地址    srv = await loop.create_server(app.make_handler(), '127.0.0.1', 9000)    logging.info('server started at http://127.0.0.1:9000...')    return srv# 固定写法loop = asyncio.get_event_loop()loop.run_until_complete(init(loop))loop.run_forever()=============================coreweb.pydef add_routes(app, module_name):        app.router.add_route(method, path, RequestHandler(app, fn))=============================回调数据coreweb.pyclass RequestHandler(object):    async def __call__(self, request):=============================app.pyasync def response_factory(app, handler):    async def response(request):        logging.info('Response handler...request %s' % request)        r = await handler(request)

3.访问mysql

=============================# app.pyasync def init(loop):    await orm.create_pool(loop=loop, host='127.0.0.1', port=3306, user='root', password='', db='sufadi')=============================# handlers.py@get('/')async def index(request):    logging.info('handlers.py handlers index: %s' % request)    users = await User.findAll()    return {        "__template__": "home.html",        'users': users    }=============================orm.py    @classmethod    async def findAll(cls, where=None, args=None, **kw):        ' find objects by where clause. '        sql = [cls.__select__]        if where:

三、运行效果

确保 mysql 运行且有数据,在浏览器输入

1.日志

INFO:root:found model: User (table: users)INFO:root:Found mapping: id --> 
INFO:root:Found mapping: email -->
INFO:root:Found mapping: passwd -->
INFO:root:Found mapping: admin -->
INFO:root:Found mapping: name -->
INFO:root:Found mapping: image -->
INFO:root:Found mapping: created_at -->
INFO:root:found model: Blog (table: blogs)INFO:root:Found mapping: id -->
INFO:root:Found mapping: user_id -->
INFO:root:Found mapping: user_name -->
INFO:root:Found mapping: user_image -->
INFO:root:Found mapping: name -->
INFO:root:Found mapping: summary -->
INFO:root:Found mapping: content -->
INFO:root:Found mapping: created_at -->
INFO:root:found model: Comment (table: comments)INFO:root:Found mapping: id -->
INFO:root:Found mapping: blog_id -->
INFO:root:Found mapping: user_id -->
INFO:root:Found mapping: user_name -->
INFO:root:Found mapping: user_image -->
INFO:root:Found mapping: content -->
INFO:root:Found mapping: created_at -->
INFO:root:建立数据库连接池INFO:root:init jinja2...INFO:root:set jinja2 template path: D:\python3-webapp-Su\www\templatesINFO:root:add_routes mod =
INFO:root:add_routes method = GET, path = /INFO:root:add_routes app =
, fn =
INFO:root:add route GET / => index(request)INFO:root:get_named_kw_args : name = request, param = request, kind = POSITIONAL_OR_KEYWORDINFO:root:RequestHandler : _app =
INFO:root:RequestHandler : _func =
INFO:root:RequestHandler : _has_request_arg = TrueINFO:root:RequestHandler : _has_var_kw_arg = NoneINFO:root:RequestHandler : _has_named_kw_args = NoneINFO:root:add static /static/ => D:\python3-webapp-Su\www\staticINFO:root:server started at http://127.0.0.1:9000...INFO:root:Request: GET /INFO:root:Response handler...request
INFO:root:call with args: { 'request':
}INFO:root:handlers.py handlers index:
INFO:root:SQL: select `id`, `email`, `passwd`, `admin`, `name`, `image`, `created_at` from `users`INFO:root:rows returned: 2INFO:root:Response handler...__template__ { '__template__': 'home.html', 'users': [{ 'id': 1, 'email': 'test@163', 'passwd': '1221', 'admin': None, 'name': 'su001', 'image': None, 'created_at': None}, { 'id': 2, 'email': 'test@qq', 'passwd': '234234', 'admin': None, 'name': 'sufadi', 'image': None, 'created_at': None}]}INFO:root:isinstance dict templating
espINFO:aiohttp.access:127.0.0.1 - - [07/Jan/2018:11:18:03 +0000] "GET / HTTP/1.1" 200 382 "-" "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"

2.运行效果

image

转载地址:http://qacti.baihongyu.com/

你可能感兴趣的文章
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>