在Django中,使用AllAuth,我想为下面提供的信息创建一个没有REST框架的自定义API

2024-09-27 00:12:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 方法用户模型id邮递员uidfacebook电子邮件
1条回答
网友
1楼 · 发布于 2024-09-27 00:12:26

从用户模型请求数据并检查其是否存在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',
    last_name='Lennon',
    defaults={'birthday': date(1940, 10, 9)},
)

注意:用于处理HTTP请求。并获取一个URL,您需要使用URL.py和views.py创建一个具有您所提到的逻辑的函数。在这之后。转到urls.py并将函数或类链接到restapi路径的urls.py内的URL(例如/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/

一旦模型querySet出现问题,这将执行CRUD操作或其他您想要的逻辑

所以你可以说

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

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

相关问题 更多 >

    热门问题