我正在尝试为Web框架实现动态路由。 目前,目标是通过url将参数传递给函数。 因此,如果用户提供的URL为“ / page / 23”,则路由功能将提取“ 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 票数:1

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

看来还有其他问题:将最后一行替换为

print(routing_table)

看看你在做什么。

  ask by kcmallard translate from so

未解决问题?本站智能推荐:

1回复

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

我试图让url输入为(某种url)/ page /(我们想要的模板的任何页码)。 我对此有麻烦,并且不确定是什么问题。 我的代码的第一部分如下: 代码的下一部分是我认为主要问题发生在page(page_id)的位置: 我的想法是,我们需要导入模板,并在模板本身中定义逻辑。
1回复

在Angular 2中动态创建查询参数

我想实现queryParams可以动态传递它。 现在我可以动态设置参数的值,但不能设置键 这是我的代码 我不能把“name”代替我的group.name这是一个字符串。 我试过这个: 但在这里我得到语法错误。 如何将queryParam的“键”放在这样的对象中?
3回复

如何在PostgreSQL中运行多个更新的语句

我试图使用适当的参数运行此脚本,但它始终抛出语法错误。语法是否有问题。调用此函数的正确方法是什么。我需要一个输出来告诉我update语句已成功执行。 我尝试了“选择function_name(schema_name.TABLE_NAME);”。让我补充一下,我是一个初学者,可以接受任何反馈。
1回复

通过在函数内部传递扩展动态数组

我有一个初始大小的数组 其中wfpPointer是一个指向指针的typedef,该指针指向WordFrequencyPair类型的变量的地址。 现在,当我检测到阵列已满时,我将调用以下函数以对其进行扩展: 问题是当我在不调用函数的情况下在主体中编写此代码时,它工作得很好,并
1回复

带有动态参数的call_user_func

我使用的是php 5.3(Windows 7)。 我创建了一个函数,用动态变量调用另一个函数 call_user_func(“func2”,$ x) - 使用的语法是什么:带参数的call_user函数,参数个数未知。 谢谢 :)
1回复

创建动态单选框时,无法将字符串传递给onClick函数

加载页面时,我必须动态地渲染几个单选按钮,因为单选按钮的数量取决于JSP中接收的数据行数。 在这里,我使用innerHTML展示了它。 问题是当我使用onClick函数并传递变量时: a & b ; 在doOption()函数中,假定为字符串的变量b在该onClick函数中称为整个函数
1回复

我想在javascript中的按钮上创建参数化函数

我想用javascript做一个参数化函数,每次单击带有参数值的按钮时,在按钮上单击HTML <label>标签都应附加唯一的ID。
1回复

如何在Web框架的动态路由中正确利用python列表?

我在第9行收到key = re.findall(etc)[0]的“列表索引超出范围错误”,但我不确定为什么。 我正在尝试做的是...对于路由,如果给出的路由为“ / user //”,则可以运行正则表达式re.findall(r“ <([[a-zA-Z _] [a- zA-Z0-9 _]
2回复

如何在python中的用户定义函数中实现“仅位置参数”?

如何为python中用户定义的函数实现“仅位置参数”?
1回复

WTForms /烧瓶:动态min_entries

我正在寻找动态使用min_entries WTForms参数,即不对数字进行硬编码。 在form.py中看起来像这样: 在views.py中是这样的: 但是,这不起作用,仅为TestInputForm呈现NO FIELDS。 如果我将“ min_entries = 10”