我目前正在使用Python/appengine/SimpleAuth为我的应用程序提供OAuth登录。当前的工作流程是用户使用OAuth登录,然后他们可以在应用程序中为自己创建一个唯一的用户名。在
创建webapp2用户实体后,我在创建唯一用户名时遇到问题。我看到在webapp2 model中有一种方法可以在应用程序实体组中启用唯一用户名,但我不知道如何为自己设置。(我使用SimpleAuth为其他OAuth提供程序设置所有内容。)
我想检查用户提交的“username”是否存在,以及它是否将其作为属性添加到当前登录的用户。如果有任何帮助/建议,我将不胜感激!在
我认为您可以扩展
webapp2_extras.appengine.auth.models.User
并添加username属性,例如然后,要创建webapp2应用程序,您需要一个包括以下内容的配置:
^{pr2}$在上述情况下,使用以下代码创建新用户将确保用户名是唯一的(由唯一模型确保):
问题是,使用此配置,您必须在创建期间设置
username
。在如果您想让username成为可选的,或者让用户稍后设置/更改它,您可能需要将上面的代码改为如下所示:
基本上,
unique_properties
将是空列表(或者您可以跳过它)。另外,您可以暂时将username
属性分配给类似user.key.id()
的内容,直到用户决定将其用户名更改为更有意义的名称。以Google+个人资料链接为例:我的链接目前是https://plus.google.com/114517983826182834234,但如果他们允许我更改它,我会尝试类似https://plus.google.com/+IamNotANumberAnymore然后,在“更改/设置用户名”表单处理程序中,您可以检查用户名是否已经存在,并更新用户实体(如果不存在):
如果给定的值不存在,
User.unique_model.create(uniq)
将使用给定值创建一个Unique
实体。在这种情况下,ok
将是True
。否则,ok
将是False
,这表示具有该值(在本例中是唯一用户名)的实体已经存在。在另外,您可能希望将}放在同一个事务中(这将是XG,因为它们位于不同的实体组中)。在
User.unique_model.create()
和{希望这有帮助!在
相关问题 更多 >
编程相关推荐