最后更新于 .

接着回归简单,向Django说再见,继续来聊用bottle做web开发。 其实上一篇文章已经讲的比较清楚了,这一次主要从另一个角度来分享一下:物理设计 干脆直接贴出来吧:

bottle_site_tpl/
|~conf/
|~depend/
| |+autumn/
| |+jinja2/
| |+wtforms/
| |-__init__.py
| `-bottle.py
|~log/
| `-site.log
|~module/
| |-__init__.py
| |-forms.py
| |-models.py
| |-mysession.py
| `-web_func.py
|+static/
|~views/
| `-test.html
|~web/
| |-__init__.py
| `-test.py
|-myapp.py
`-setting.py

可以看出,最外层有两个文件,分别是setting.py 和 myapp.py。 setting.py(很像django吧,哈哈),顾名思义,是各种配置项,包括log目录和等级,模板目录,静态文件目录等。 而myapp.py的代码如下:

import setting

from bottle import debug, run

from web import app

if __name__ == '__main__':
    debug(True)
    run(app, host="0.0.0.0", port=80, reloader=True)

相当于一个启动器,通过执行 python myapp.py 可启动整个网站。(当然,也可以和uwsgi结合) 接着我们进入第二级目录,从web目录开始: web目录用来存放Bottle的各个实例,构成了网站的主框架。 其中的__init__.py代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from bottle import Bottle
from bottle import debug, run
from bottle import redirect, abort, static_file
from bottle import jinja2_template as template
from bottle import request, response, local
from bottle import TEMPLATE_PATH

from mysession import get_session_info, set_session_info
from mysession import deco_session_check

from setting import CUSTOM_TPL_PATH
TEMPLATE_PATH.insert(0, CUSTOM_TPL_PATH)

app = Bottle()

app.mount('/test', __import__('test').app)

if __name__ == '__main__':
    debug(True)
    run(app, host="0.0.0.0",reloader=True)

可见 web.__init__.py 是统一管理web相关资源的入口,会mount各个模块,而对于test.py,则是各个模块对应的实现。

  • depend 目录是存放各个依赖的模块,这样做会更容易管理。
  • module 是开发中较为独立的模块,比如models.py是模型,forms.py是表单等等
  • views 是模板目录
  • static 是静态文件目录
  • log 是日志目录

OK,整个就是这样了。 按照这样来做了之后,整个模块的划分就清晰了很多,可扩展性也好了很多。 当然,这只是我一家之言,如果有朋友有更好的物理设计,也欢迎告知。 惯例,代码放在这里: http://code.google.com/p/vimercode/source/browse/#svn%2Ftrunk%2Fbottle_site_tpl

Pingbacks

  1. web开发框架的选择(bottle or flask)及为autumn增加多线程支持 | 岭南六少 on #

    [...] 其实之前就有写过关于python web开发框架选择的文章,之前最终选择了bottle,并给出了bottle开发的物理设计,详见之前的文章:回归简单,向Django说再见、bottle做web开发的物理设计,然而经过最近两个星期的实践,又有了一些新的想法。 [...]

  2. web开发框架的选择(bottle or flask)及为autumn增加多线程支持 | 热资讯 on #

    [...] 其实之前就有写过关于python web开发框架选择的文章,之前最终选择了bottle,并给出了bottle开发的物理设计,详见之前的文章:回归简单,向Django说再见、bottle做web开发的物理设计,然而经过最近两个星期的实践,又有了一些新的想法。 [...]

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. Jam

    Jam on #

    Good.Simple is better than complex!

    Reply

  2. Cucole Lee

    Cucole Lee on #

    Google Code里面的怎么没有啊,下载链接里面没有文件,希望博主检查下啊,如果可以的话,希望能把文件Email下给我,最近正在研究bottle,对这个设计很感兴趣。 :)

    Reply

    1. Dante

      Dante on #

      特意又去看了一下链接,文件都在哦。

      Reply

  3. 枯干

    枯干 on #

    # Non-members may check out a read-only working copy anonymously over HTTP.
    svn checkout http://vimercode.googlecode.com/svn/trunk/ vimercode-read-only
    这个不能检出啊,怎么回事?检出的时候提示网址不存在。

    Reply

    1. Dante

      Dante on #

      呃,应该不会吧,直接访问能看到吗

      Reply

  4. li

    li on #

    不适合新手。

    Reply

    1. Dante

      Dante on #

      嗯,新手用django比较好,规范些。

      Reply

发表评论