将变量从jinja2模板传递给python

时间:2017-12-20 19:40:02

标签: python jinja2 webapp2

对不起,如果这是一个菜鸟问题,我还在学习。我已经从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但我不确定这是否有效。

1 个答案:

答案 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}}