问题标签 [webapp2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何使用 webapp2 的用户模型拥有用户名?
我成功使用 webapp2 可以对用户进行身份验证和登录/注销,并且我有一个装饰器来知道用户是否已登录,这很有效:
现在我想添加一些基本的东西作为用户名,我怀疑我可能不必继承 webapp2_extras 提供的 User 模型,因为它是一个 Expando 模型。您能告诉我如何添加用户名或使用用户名更新用户吗?我没有尝试,但我相信我可以显示 auth_id 但它与用户名不同?
谢谢
更新
似乎 User 模型是一个 expando 模型,例如在创建用户时,您可以像这样“添加属性”:
我没有彻底测试上面的代码,但似乎使用 webapp2 我们不需要继承 User 类来获得功能。
解决方案/解决方法
python - 如何在 webapp2 中为用户对象使用 expando 属性?
我正在尝试使用扩展用户对象的属性:
但我收到一条错误消息:
我应该如何为用户对象而不是元组执行此操作?
谢谢
google-app-engine - 在 webapp2 中将请求作为全局变量访问
我正在将我的 appengine 应用程序从 Pylons 迁移到 webapp2。在 pylons 中,请求和响应对象是全局的。但是,在 webapp2 中,它们作为对象属性(self.request、self.response)被访问。
但我假设在 extras 包中使用 Local 模块是为了以线程安全的方式访问全局变量。
我无法弄清楚如何在 webapp2 应用程序中将请求对象作为全局变量而不是 self.request 访问,因为它会保留我现有的控制器代码。
我找不到很多关于本地模块以及如何使用它的文档。Flask 和 Bottle 等其他框架也可以使用 contextLocal 对请求进行全局访问。因此,在 webapp2 中以相同的方式访问请求对象将是一个更可移植的代码。
python - 如何在 Google 应用引擎上设置 settings.py
我从 GAE/Py2.5 更改为 2.7,从 Django0.9 更改为 Django1.2。当导致 TemplateDoesNotExist 错误并禁用时,我正在使用相对路径将标签扩展到模板引擎。
它使用模板“google.appengine.ext.webapp.template”。我想,如何将自己的加载器设置为 TEMPLATE_LOADERS 或设置模板路径 TEMPLATE_DIRS。
但是,我不知道如何设置。请告诉我如何设置。
python - 如何使用 webapp2 添加 auth_id?
我使用来自 webapp2 的 auth 模块,我想知道如何添加一个像 'facebook:fbuserid12121212' 这样的 auth_id 并将其添加到用户的 auth_id:s 列表中。但我从 API 中看不到允许我这样做的功能。你能告诉我怎么做吗?
谢谢
python - python/webapp2:在基于网络表单的计算器中到处都违反 DRY ......我该如何解决?
我在这里有一个基于网络表单的宏观经济学模型,它接受参数和输入并求解线性方程组。
webapp2 处理程序:
求解器:
我知道这段代码很恶心,我只是不知道如何消除对每个参数执行以下操作所需的 DRY:
- 从 http GET 提交中获取参数值。
- 将其发送到模板值字典。
- 如果它有一个值,请将其转换为浮点数,以便 numpy 知道如何处理它。
- 获取求解器函数范围内的参数。
谢谢。
google-app-engine - 如何在expando模型之间进行引用?
更新
这是我创建以下方案的最大努力
原始问题
如何使用 expando 类进行自我引用以指示哪个用户是哪个用户的“赞助商”?“赞助商”是邀请新用户的人,因此在创建时我们必须存储它,并且将其存储为引用属性比字符串或字符串列表要简洁得多。
我可以创建一个新用户,但我不知道如何进行引用,以便我可以告诉一个用户谁是另一个用户谁是第一个用户的赞助商,我想一种建模方法是使用 selfreferenceproperty 因为两者对象是用户,但复杂之处在于它是一个扩展模型,所以我不知道如何使用引用属性。你能告诉我怎么做或给我一个线索,我怎样才能以最好的方式解决这个问题?
我不知道如何做最后一部分,用 epando 模型存储实际的参考属性。如何做呢?
更新
似乎无法做到:
NotImplementedError: Property sponsor does not support <class 'google.appengine.ext.db.ReferenceProperty'> types.
代码:
它迫使我使用字符串而不是引用,然后解决方案是可行的:
google-app-engine - 请帮我改进我的路由
我的路由对我有用,但它是由很长时间构建的,并且由于框架已更新为 webapp2,所以我混合路由并且不知道哪种方式最好。你能帮我改进一下我应该做哪些路由以及如何做路由吗?让框架让路由为处理程序设置默认值还是直接在处理程序上方设置路由更好?
因此,当添加一个新的 URI 时,我必须同时添加到 app.yaml、路由和处理程序 clas 以及一个不理想的模板,因为这些地方太多了,无法添加东西只是为了从 WSGI 获得响应。所以我想重新编写代码以使其使用更多默认值,例如,如果我添加一个 RequestHandler 类,那么它应该有一个默认路由,因为它已经有一个唯一的名称。框架能做到吗?
感谢您的任何回答或评论
google-app-engine - 如何创建匹配键的查询?
我使用另一个用户(赞助商)的密钥来指示谁是用户的赞助商,它会在数据存储中为那些拥有赞助商的用户创建一个链接,它最多可以是一个,但赞助商可以赞助许多用户,例如在这种情况下,ID 2002 赞助了其他三个用户:
在这种情况下,此查询可以满足我的要求:SELECT * FROM User where sponsor =KEY('agtzfmJuYW5vLXd3d3ILCxIEVXNlchjSDww')
但我不知道如何使用 python 进行编程,我只能将它用于数据存储区。当我想匹配在同一字段中具有相同用户作为键的用户集时,如何通过键查询?我的模型中的用户最多可以有一个赞助商,我只想知道某个特定的人赞助了谁,这可能是用户列表,然后他们又赞助了我也想查询的用户。
字段赞助商是一个键,它具有指向数据存储中赞助商的链接。我像 user2.sponsor = user1.key 一样设置密钥,现在我想找到所有 user1 赞助的查询,应该就像
User.All().filter('sponsor = ', user1.key)
但是赞助商是键类型的字段,所以我不知道如何匹配它以查看例如活动用户是赞助商的人的列表,以及当第二代也有链接时它如何变成树。如何选择这个用户是赞助商的用户列表,然后是第二代?当我像 u1=u2.key 即 user2.sponsor=user1.key 一样对关系进行建模时。感谢您的任何提示
以下解决方法是不好的做法,但这是我最后也是唯一的手段:
更新
问题是 keyproperty 不是必需的,当我认为这是我的代码中的错误时,Guido Van Rossum 已将其报告为 ndb 中的错误。这是我现在正在使用的,这是一个非常可接受的解决方案,因为组织中的每个真实用户(可能除了程序员、测试人员和管理员)都需要有一个赞助商 ID,它是一个用户 ID。
google-app-engine - 如何解决 UnicodeDecodeError?
尝试从数据存储区读取非 ascii 时收到一条奇怪的错误消息:
过去工作的循环很普通:
我能做些什么来解决这个错误?
我的处理程序看起来像这样
我的模型定义是来自 webapp2 的用户模型。这也是我的自定义文件管理器 makeid:
更新
解决方法很奇怪,我只是做了一个.decode('utf-8')
不需要做的事情:
有没有办法一次解码用户对象的所有变量而不是一个一个?