如何在Python中实现动态路由?

时间:2014-04-19 23:02:46

标签: python function dynamic parameters routing

我正在尝试为Web框架实现动态路由。目前,目标是通过url将参数传递给函数。因此,如果用户提供“/ page / 23”的URL,则路由功能将提取“23”,然后将其用作页面功能的参数。然而,我得到了一个“keyerror”。

import re
routing_table = {}
url = "/page/23"

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 page(page_id):
   return "this is page %d" % page_id

route("/page/<page_id>", page)
print(routing_table[url])

1 个答案:

答案 0 :(得分:1)

当您致电route时,您使用的url等于"/page/<page_id>",但在最后一行中,url是一个等于"/page/23"的全局变量

看起来还有其他问题:用

替换你的最后一行
print(routing_table)

看看你在做什么。