【问题标题】:GAE Python how can I pass and retrieve a parameter to a request handler?GAE Python如何将参数传递和检索到请求处理程序?
【发布时间】:2015-01-14 21:30:37
【问题描述】:

--- 重写问题以使其更清晰并包含代码---

我正在构建我的第一个 GAE python 应用程序,并且需要弄清楚如何在系统的不同模块之间传递参数,以便不同的请求处理程序可以获取这些参数。

我的应用程序有一个主页,它是一个带有按钮的页面,用户可以单击以跳转到不同的系统块(产品、食谱、订单..)。用户在主页上登录,这种登录应该贯穿系统的所有块。

主页上的 href 现在看起来像:

<a href="products">Products
<a href="recipes">Recipes
<a href="orders">Orders

并非所有用户都可以访问所有块,我在数据存储中保留了一个具有访问权限的列表。

现在进入产品页面:只有当用户在数据存储区中的登录表明对该页面有足够的访问权限时,才应允许用户访问该页面。

用户点击主页中的产品链接(或按钮),然后进入 products.py 文件中的“../products”页面。

在 products.py 中,我(再次)让用户从不同的选项中进行选择。默认情况下,用户被定向到第一个处理程序,并看到一个新的选项列表。

application = webapp2.WSGIApplication([
    ('/products', ProductsPage),
    ('/products-save', SaveProduct),
    ('/products-find', FindProduct),
    ('/products-delete', DeleteProduct),    
    ('/products-search', SearchProducts),
], debug = True)

假设用户现在选择创建或保存产品。他将被定向到由 SaveProduct 处理的 ../products-save 页面。

此请求处理程序以:

class SaveProduct(webapp2.RequestHandler):
    def post(self):
        # if user_id is authorized to create / modify products:
        #     code ...
        # else display nice message "not enough rights" 

我在主页上获得了 user_id,并且需要通过所有中间步骤传输它,以便它到达另一个 .py 文件中的最终函数(在本例中为 SaveProduct),以便它验证用户是否有足够的权利。

我的问题是:我该怎么做?

我已经检查了 webapp2 文档中的配置选项和关于获取的信息,但没有找到我要查找的内容。

【问题讨论】:

  • 这个问题对我来说很不清楚。你在谈论查询字符串吗?你有可以展示的代码吗?
  • 嗨@aschmid00,感谢您的回复。我在问题中添加了代码并解释了我到目前为止所做的事情。也许现在问题更清楚了?

标签: python google-app-engine parameter-passing


【解决方案1】:

如果您谈论的是来自用户填写并提交的网页的请求,那么入门教程here 提供了一些如何执行此操作的示例。具体来说,来自 HTML 表单的参数将成为您的请求处理程序代码接收的 request 对象的一部分,您只需在处理程序代码中按名称获取它们即可。这些链接假定您使用的是 webapp2 框架,但其他框架的过程是相同的。

【讨论】:

  • 嗨 gcobb,谢谢,但也许我的问题不够清楚。我已经修改了教程中的代码,将表单中搜索框的内容传递给请求处理程序:搜索字符串传递没有问题。我真正的问题是如何不从表单而是从代码传递参数?例如要允许/拒绝用户访问系统的某些部分,我需要将 user_id 或他的授权级别传递给不同的模块。顺便说一句,我正在根据数据存储中的列表验证用户,在该列表中我可以检查用户可以访问哪些模块以及它是 r/o 还是 r/w。
  • 隐藏的输入字段将允许您传递通常对用户不可见的表单数据,但这是一种冒险的方式进行身份验证,因为精明的用户可以轻松更改发送到服务器。将一些用户标识发送到服务器并让服务器端检查用户的访问权限可能更安全。
猜你喜欢
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 2014-11-30
  • 2011-05-02
  • 1970-01-01
相关资源
最近更新 更多