2010-08-29 41 views

回答

2

不完全符合您的描述,但可以使用bottle来满足您的需求。 route修饰器更加结构化。 Bottle不托管WSGI应用程序,尽管它可以作为WSGI应用程序托管。

实施例:

from bottle import route, run 

@route('/:name') 
def index(name='World'): 
    return '<b>Hello %s!</b>' % name 

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

Flask/Werkzeug具有不基于正则表达式以惊人的wsgi URL调度。例如,在烧瓶中:

@myapp.route('/products/<category>/<item>') 
def product_page(category, item): 
    pseudo_sql = select details from category where product_name = item; 
    return render_template('product_page.html',\ 
         product_details = formatted_db_output) 

这让你你所期望的,即,http://example.com/products/gucci/handbag;这是一个非常好的API。如果你只是想文字很简单:

@myapp.route('/blog/searchtool') 
def search_interface(): 
    return some_prestored_string 

更新:这里每穆罕默德的问题是使用2个非正则表达式的事业从WERKZEUG最小WSGI兼容的应用程序 - 这只是需要一个URL,如果整个路径就是“/”你会得到一个值得欢迎的消息,否则你得到的网址向后:

from werkzeug.routing import Map, Rule 

url_map = Map([ 
    Rule('/', endpoint='index'), 
    Rule('/<everything_else>/', endpoint='xedni'), 
]) 

def application(environ, start_response): 
    urls = url_map.bind_to_environ(environ) 
    endpoint, args = urls.match() 
    start_response('200 OK', [('Content-Type', 'text/plain')]) 
    if endpoint == 'index': 
     return 'welcome to reverse-a-path' 
    else: 
     backwards = environ['PATH_INFO'][::-1] 
     return backwards 

您可以部署与龙卷风,mod_wsgi的,等等。当然这是很难被击败瓶和漂亮的成语瓶子,或Werkzeug超出MapRule的完整性和质量。

+0

它是一个wsgi调度程序,它将HTTP请求传递给wsgi应用程序?或者在我的答案中与'bottle'相同,是否期望与特定框架一起使用的函数? – 2010-08-30 12:22:27

+0

查看第二个链接,快速入门部分。但是,是的,您只能使用Werkzeug路由进行纯wsgi调度,您可以调用'Map'对象上的'bind_to_environ'方法,请求的wsgi environ作为应用程序中的一个参数,然后关闭并运行 - 您可以在6行代码中只有'Map'和'Rule'的wsgi兼容应用程序。 Flask的东西只是一个很好的工具,用于以更透明的方式处理这些相同的对象。 – unmounted 2010-08-31 02:01:32