对不起,如果这是一个菜鸟问题,我还在学习。我已经从python代码传递了一个变量到jinja2 HTML模板来设置一个URL,如下所示:
<a href="/delete/{{ result.key.id() }}">Delete</a>
当按下此链接时,它应该运行一个查询,删除具有该ID的实体。但是当按下链接时,它会转到/ delete / 1827424298,这会导致404错误,因为请求处理程序不存在。
我需要将该ID传回我的python代码,以便它可以运行一个方法来删除具有相同ID的实体。我该怎么做呢?如果这很重要,请使用webapp2。
class DeleteRequestHandler(webapp2.RequestHandler):
def get():
template = template_env.get_template('myrequests.html')
context = {
'results': results.key.id()
}
self.response.out.write(template.render(context))
编辑:我已经添加了我的删除处理程序 - 它不完整,因为我还没有添加查询来删除实体。到目前为止我的想法是我可以从jinja2模板中获取results.key.id()
并将其放入results
但我不确定这是否有效。
答案 0 :(得分:0)
所以我认为你感到困惑的是如何设置一个带有动态部分到URL的路由处理程序。遗憾的是,在webapp2教程中完全忽略了这一点,因为它是编写任何Web应用程序的基本部分。但是,the guide to routing中有很好的介绍,您应该阅读。
最简单的说,只需要在路线中加上正则表达式:
/delete/<number>/
现在将class MyDeleteHandler:
def get(self, item_id):
key = ndb.Key(MyModel, item_id) # or whatever
形式的任何网址路由到您的删除处理程序。
您在URL中传递的ID将是处理程序方法的第一个位置参数:
{{1}}