微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用所有身份验证的 Django 中,我想制作一个没有 REST 框架的自定义 API,以遵循我在下面提供的信息

如何解决在使用所有身份验证的 Django 中,我想制作一个没有 REST 框架的自定义 API,以遵循我在下面提供的信息

在这里,我将使用 POSTMAN 输入 UID、电子邮件用户名,它将检查 uid 是否存在,如果存在则登录用户,如果不存在,如果用户模型中存在相同的电子邮件,它将创建条目对于社交帐户表中的相同电子邮件以及生成令牌,因此用户也可以通过社交电子邮件 ID 登录。你能解释一下我应该使用哪种方法或什么来创建所有条目并生成令牌。我还将在 POSTMAN 中指定 logintype 就像google 或 facebook.and 如果用户也不存在于用户表中,它将使用电子邮件用户名创建一个新的

解决方法

从用户模型请求数据并检查它是否存在 if/else 然后创建新行。代码如下。

    try:
        obj = Person.objects.get(first_name='John',last_name='Lennon')
    except Person.DoesNotExist:
        obj = Person(first_name='John',last_name='Lennon',birthday=date(1940,10,9))
        obj.save()

还有另一种方法可以做同样的事情,它使用它的一个内部函数。

bj,created = Person.objects.get_or_create(
    first_name='John',defaults={'birthday': date(1940,9)},)

注意:处理 HTTP 请求。并获取您需要使用 urls.py 和 views.py 创建具有您提到的逻辑的函数的 URL。在这之后。转到您的 urls.py 并将函数或类链接到您在 urls.py 中的 URL 以获取 REST API 路径(例如 /api/new/user/)

要生成像 facebook 这样的 UUID,您需要修改您的 models.py 并添加以下内容。

import uuid
from django.db import models

class Person(models.Model):
    uuid_key = models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)

如果这还不够数据。您可以使用 Django 中的信号功能。

https://docs.djangoproject.com/en/3.2/ref/signals/

一旦您的模型查询集发生某些事情,这将执行 CRUD 操作或您想要的其他逻辑。

所以你可以说,

  • 在查询集之后更新信息
  • 删除QuerySet后的其他信息
  • 在 QuerySet 之后进行计算。

以下是如何使用它的示例:https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。