bottle step by step (一) bottle的简单介绍


本站原创:转帖请标明转自: http://bbs.python520.com
本文转自: http://bbs.python520.com/thread-673-1-1.html
bottle是个非常小巧的python web 框架,只有一个文件,3000多行,代码也差不多都读了一遍。发现的确不错。现在推荐给大家

关于bottle的一些搭配
  • ORM
        ORM我选用了简单的autumn,因为并不会用到复杂的关系数据。
  • 模板
        模板使用 jinja2,本身贴近django模板的语法,用起来也很熟悉。
  • form类
        form类使用 WTForms。
一切看起来都很美好,似乎该有的功能都有了,但是如果真的如此简单,就不会有文章开头那段话了。
要使他们协作起来是件麻烦的事情,最麻烦的就是unicode的问题。
本着输入的最开始就要转成unicode,输出之前才转成bytes的原则,在使用这些类的时候有一下几点要遵循:

0.autumn在连接MySQL的时候,一定要用 use_unicode=True,这样从MySQL获取的数据才默认是unicode的
  • autumn_db.conn.connect(
  • DATABASE['engine'],
  • db=DATABASE['db'],
  • user=DATABASE['user'],
  • passwd=DATABASE['passwd'],
  • host=DATABASE['host'],
  • port=DATABASE['port'],
  • use_unicode=True
  • )

复制代码
  • 使用WTForms的时候,要使用 form = RegForm(obj=request.forms) 的方式(bottle要使用0.10),这样才能form的数据才会默认就是unicode
  • autumn 的Model传入的参数必须是unicode,而仅仅如此还是不行的,由于MySQLdb的bug(我个人认为),要求excute函数传入的 values必须是bytes类型,而sqlite3则要求传入unicode,所以我们要改一下autumn的代码,在query.py的190行增加 代码:

    • #Add-Begin by dantezhu in 2011-11-14 12:17:10
    •     if db.conn.dbtype == 'mysql':
    •         values = [it.encode('utf8') if isinstance(it, unicode) else it for it in values]
    • #Add-End

    复制代码
    并在connection.py第6行增加如下代码:
    • #Add-Begin by dantezhu in 2011-12-16 01:56:34
    •         self.dbtype = dbtype
    • #Add-End

    复制代码
    OK,到此为止大功告成!
    所有的组件都是我们可拆卸的,如果网站够简单,可以只有一个bottle;如果网站太复杂,我们可以任意的添加自己需要的模块,而且它们是真正做事的。
    这还只是个开始

    说了这么多。接下讲点最简单的入门
    bottle 官方网站:http://bottlepy.org/
    首先下载 bottle  https://github.com/defnull/bottle/raw/master/bottle.py
    把 bottle.py 放到目标文件夹
    新建1.py:
    • from bottle import route, run
    • #team:bbs.python520.com
    • @route('/hello/:name')
    • def index(name='World'):
    •     return '<b>Hello %s!</b>' % name

    • run(host='localhost', port=8080)

    复制代码

然后运行
  • python 1.py

复制代码

显示成功监听 8080端口
ctrl+c退出
然后在火狐中打开 http://127.0.0.1:8080/hello/abc http://127.0.0.1:8080/hello/python520.com 等等

然后在我们的监控窗口显示我们请求的每条记录:

转载于:https://my.oschina.net/u/438238/blog/55533

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Traceback (most recent call last): File "train.py", line 354, in <module> fit_one_epoch(model_train, model, yolo_loss, loss_history, optimizer, epoch, epoch_step, epoch_step_val, gen, gen_val, UnFreeze_Epoch, Cuda, save_period, save_dir) File "/hy-tmp/yolov5-pytorch-bilibili/yolov5-pytorch-bilibili/utils/utils_fit.py", line 34, in fit_one_epoch outputs = model_train(images) File "/usr/local/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl return forward_call(*input, **kwargs) File "/usr/local/miniconda3/lib/python3.8/site-packages/torch/nn/parallel/data_parallel.py", line 169, in forward return self.module(*inputs[0], **kwargs[0]) File "/usr/local/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl return forward_call(*input, **kwargs) File "/hy-tmp/yolov5-pytorch-bilibili/yolov5-pytorch-bilibili/nets/yolo.py", line 102, in forward self.h3 = self.bottlenecklstm3(P3, self.h3, self.c3) # lstm File "/usr/local/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl return forward_call(*input, **kwargs) File "/hy-tmp/yolov5-pytorch-bilibili/yolov5-pytorch-bilibili/nets/bottleneck_lstm.py", line 141, in forward new_h, new_c = self.cell(inputs, h, c) File "/usr/local/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl return forward_call(*input, **kwargs) File "/hy-tmp/yolov5-pytorch-bilibili/yolov5-pytorch-bilibili/nets/bottleneck_lstm.py", line 68, in forward y = torch.cat((x, h),1) RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking argument for argument tensors in method wrapper_cat)
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值