Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Tastypie_Django_Tastypie - Fatal编程技术网

Django Tastypie

Django Tastypie,django,tastypie,Django,Tastypie,我正在创建一个需要使用身份验证的移动应用程序。我如何实现以下目标: 我需要创建一个用户。创建用户后,它需要向用户发送Api\u client和一个秘密作为响应 我有一个功能来执行验证。创建用户后,需要调用函数进行移动验证 重要的是,如何阻止使用for循环并开始添加用户的用户 我试过这个: models.signals.post_save.connect(create_api_key, sender=User) 已创建API密钥,但在创建用户时未将其作为响应发送成功。以下是我从您的问题中了解到的

我正在创建一个需要使用身份验证的移动应用程序。我如何实现以下目标:

  • 我需要创建一个用户。创建用户后,它需要向用户发送
    Api\u client
    和一个秘密作为响应
  • 我有一个功能来执行验证。创建用户后,需要调用函数进行移动验证
  • 重要的是,如何阻止使用for循环并开始添加用户的用户
  • 我试过这个:

    models.signals.post_save.connect(create_api_key, sender=User)
    
    已创建API密钥,但在创建用户时未将其作为响应发送成功。

    以下是我从您的问题中了解到的内容:

  • 您希望您的移动应用程序的任何用户注册自己, 匿名,作为Django应用程序的用户
  • 此请求必须触发创建Tastypie api_密钥,然后返回该密钥
  • 您希望防止此请求被垃圾邮件发送
  • 我不明白这一点:

    “我有一个未经验证的手机功能。创建用户后,需要调用该功能进行手机验证。”


    要回答我得到的要点:

  • 请参见有关用户向Tastypie注册的SO问题,特别是这一部分:

    def obj_create(self, bundle, request=None, **kwargs):
        username, password = bundle.data['username'], bundle.data['password']
        try:
            bundle.obj = User.objects.create_user(username, '', password)
        except IntegrityError:
            raise BadRequest('That username already exists')
        return bundle
    
    有关完整的演练,请查看这篇文章

  • 关于api_密钥的创建,您的思路是正确的,除了您必须告诉api实际将其发回。您可以使用常规方式(但需要另一个请求):

    i、 e使其可从UserResource访问,如上面链接的文章所述,具体如下:

    def dehydrate(self, bundle):
        bundle.data['key'] = bundle.obj.api_key.key
    
        try:
            # Don't return `raw_password` in response.
            del bundle.data["raw_password"]
        except KeyError:
            pass
    
        return bundle
    
    如果您想在用户注册后立即发送,请不要忘记将“always\u return\u data”设置为True,并将api\u键添加到响应中

  • 垃圾邮件/循环注册:

    您应该调查服务器在这方面的能力。例如,假设您正在使用Nginx:

    另一种选择可能是使用此选项:

  • 希望这有帮助


    问候,

    在等待了许多天之后。你引导我走向成功。非常感谢:)如果它与原始问题相关,请放心,如果我能回答,我会更新。否则,最好打开另一个线程:)