我有很多名字,应该链接到与其名字相对应的网址。我知道我可以通过为列表中的每个元素生成一个函数并使用@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
答案 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
。