Jar*_*ett 6 python frameworks module bottle
我刚开始进行Python Web开发,并选择Bottle作为我的首选框架.
我正在尝试使用模块化的项目结构,因为我可以拥有一个"核心"应用程序,其中包含围绕它构建的模块,这些模块可以在设置期间启用/禁用(或者如果可能的话,即时启动... .不知道我怎么设置那个).
我的"主要"课程如下:
from bottle import Bottle, route, run
from bottle import error
from bottle import jinja2_view as view
from core import core
app = Bottle()
app.mount('/demo', core)
#@app.route('/')
@route('/hello/<name>')
@view('hello_template')
def greet(name='Stranger'):
return dict(name=name)
@error(404)
def error404(error):
return 'Nothing here, sorry'
run(app, host='localhost', port=5000)
Run Code Online (Sandbox Code Playgroud)
我的'子项目'(即模块)是这样的:
from bottle import Bottle, route, run
from bottle import error
from bottle import jinja2_view as view
app = Bottle()
@app.route('/demo')
@view('demographic')
def greet(name='None', yob='None'):
return dict(name=name, yob=yob)
@error(404)
def error404(error):
return 'Nothing here, sorry'
Run Code Online (Sandbox Code Playgroud)
当我进入http://localhost:5000/demo浏览器时,它显示500错误.瓶子服务器的输出是:
localhost - - [24/Jun/2012 15:51:27] "GET / HTTP/1.1" 404 720
localhost - - [24/Jun/2012 15:51:27] "GET /favicon.ico HTTP/1.1" 404 742
localhost - - [24/Jun/2012 15:51:27] "GET /favicon.ico HTTP/1.1" 404 742
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/bottle-0.10.9-py2.7.egg/bottle.py", line 737, in _handle
return route.call(**args)
File "/usr/local/lib/python2.7/dist-packages/bottle-0.10.9-py2.7.egg/bottle.py", line 582, in mountpoint
rs.body = itertools.chain(rs.body, app(request.environ, start_response))
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)
文件夹结构是:
index.py
views (folder)
|-->hello_template.tpl
core (folder)
|-->core.py
|-->__init__.py
|-->views (folder)
|--|-->demographic.tpl
Run Code Online (Sandbox Code Playgroud)
我不知道我在做什么(错误):)
任何人都知道如何/应该如何做?
谢谢!
您正在将模块"core"传递给mount()函数.相反,你必须将瓶子app对象传递给mount()函数,所以调用就像这样.
app.mount("/demo",core.app)
Run Code Online (Sandbox Code Playgroud)
以下是mount()函数的正式文档.
Run Code Online (Sandbox Code Playgroud)mount(prefix, app, **options)[source]将应用程序(Bottle或plain WSGI)挂载到特定的URL前缀.
例:Run Code Online (Sandbox Code Playgroud)root_app.mount('/admin/', admin_app)参数:
prefix - 路径前缀或mount-point.如果它以斜线结尾,则该斜杠是强制性的.
app - Bottle或WSGI应用程序的实例
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |