Cherrypy将多个项目暴露给相同的功能

时间:2015-10-02 22:31:03

标签: python cherrypy

我有很多名字,应该链接到与其名字相对应的网址。我知道我可以通过为列表中的每个元素生成一个函数并使用@cherrypy.expose来装饰它,我想知道是否可以将项目链接到函数function而不打开它每个项目的网站。 (像是在运行中使用lambda函数生成适当的函数,并传递适当的参数?)

import cherrypy

class Test(object):

  @cherrypy.expose
  def index(self):
    html1 = '''<html>
            <head></head>
            <body>
            <ul style="list-style: none;">'''
    html2 = """</ul>
            </body>
            </html>"""
    html3 = ""
    for name in names:
        html3 += "<li><a href='%s'>%s</a></li>" %(name.lower(), name)
    return html1 + html3 + html2

  @cherrypy.expose
  def function(self, name=''):
    print(name)
    return name

1 个答案:

答案 0 :(得分:0)

您可以使用特殊方法auth_basic off;

default

您可以尝试使用以下网址:/,/ branch,/ ANY_OTHER_NAME。它甚至可以用更通用的术语定义,方法定义如下:

import cherrypy as cp

class App:

    @cp.expose
    def index(self):
        return "This is the index"

    @cp.expose
    def default(self, name):
        return "Default with name: %s" % name

    @cp.expose
    def branch(self):
        return "Specific branch"

cp.quickstart(App())

这样你几乎可以接受任何东西。它会将网址部分映射到 @cp.expose def default(self, *args, **kwargs): return "Default with args: %s and kwargs: %s" % (args, kwargs) 列表,将查询字符串映射到args