问题描述
在这里,我将使用 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