【发布时间】:2014-06-04 06:04:15
【问题描述】:
我不断收到错误:“unhashable type: list” for line (routing_table[key][0] = [[params], func]。我正在尝试将 url 和函数传递给路由函数。这条路由函数应该使用正则表达式为其他函数挑选参数。最终目标是读入“/page/<page_id>,然后挑选<page_id>并将其替换为用户输入。然后将传递用户输入进入函数。我不明白为什么这不起作用。
import re
routing_table = {}
def route(url, func):
key = url
key = re.findall(r"(.+?)/<[a-zA-Z_][a-zA-Z0-9_]*>", url)
if key:
params = re.findall(r"<([a-zA-Z_][a-zA-Z0-9_]*)>", url)
routing_table[key][0] = [[params], func]
else:
routing_table[url] = func
def find_path(url):
if url in routing_table:
return routing_table[url]
else:
return None
def index():
return "This is the main page"
def hello():
return "hi, how are you?"
def page(page_id = 7):
return "this is page %d" % page_id
def hello():
return "hi, how are you?"
route("/page/<page_id>", page)
print(routing_table)
【问题讨论】:
-
Stackoverflow 将允许您输入您喜欢的内容,但您可以通过使用 `(反引号)字符来防止它被解释为 HTML 标记 - 例如
<this>。 -
谢谢!我现在就编辑。
标签: python regex function dynamic parameters