В Django, используя всю аутентификацию, я хочу создать пользовательский API без рамок REST для следующей информации, которую я предоставил ниже

#python #django #django-allauth

Вопрос:

В этом я введу UID ,адрес электронной почты,имя пользователя с помощью POSTMAN,и он проверит,существует ли uid или нет,если он существует,он войдет в систему пользователя, если его не было, и если в модели пользователя существует тот же адрес электронной почты, он создаст запись для того же адреса электронной почты в таблице социальной учетной записи вместе с генерирующим токеном, чтобы пользователь также мог войти через идентификатор социальной электронной почты.Можете ли вы объяснить мне, какой метод или что я должен использовать для создания всех записей и генерации токена.Я также укажу тип входа в POSTMAN,как в google или facebook.и если пользователь также не существует в таблице пользователей, он создаст новый, используя адрес электронной почты и имя пользователя

Ответ №1:

Чтобы запросить данные из пользовательской модели и проверить, существует ли она, если/иначе, затем создайте новую строку. Код выглядит следующим образом.

     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-адрес, необходимый для использования urls.py и в views.py чтобы создать функцию с логикой, о которой вы упоминаете. после этого. иди к своему urls.py и свяжите функцию или класс с вашим URL-адресом внутри urls.py для вашего пути REST API (например, /api/новый/пользователь/)

Чтобы сгенерировать UUID, подобный facebook, вам необходимо изменить свой 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 или другой логики, которую вы хотите, как только что-то произойдет с вашим набором запросов модели.

Так что вы можете, скажем,

  • Обновите информацию после набора запросов
  • Удалите другую информацию после запроса
  • Выполните расчет после набора запросов.

Вот как это использовать на примере: https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html

Комментарии:

1. Я знаю это, я хочу создать социального пользователя на основе электронной почты,которую я ввел в POSTMAN, которая уже существует, это модель ПОЛЬЗОВАТЕЛЯ, она должна генерировать такие данные, как токен и атрибут extra_data как для социальной учетной записи, так и для токенов социальных приложений. Я использую пакет allauth для входа в социальную сеть