#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 для входа в социальную сеть