Перейти к контенту

Django 15. Пишем API - Добавление пользователя

Сайт на Django Иван Ашихмин 1031

Теперь давайте напишем API, обращаясь к которому мы будем создавать или обновлять пользователя. 

Django 15. Пишем API - Добавление пользователя
Сайт на Django Иван Ашихмин 1031

Метод POST-запроса.

Откроем файл api.py и создадим класс CreateBotUser и статический метод post.

В прошлый раз мы делали метод для GET запроса, в этот раз наш бот не получает, а передаёт данные по API, именно по этому нам нужен POST запрос.

class CreateBotUser(APIView):
    @staticmethod
    def post(request):

 

Создание объекта пользователя.

Далее создаём переменную usr_obj в которую мы, с помощью метода get_or_create получим объект пользователя, если пользователь с chat_id уже есть в базе, если же его нет, он будет создан и так же помещен в переменную:

        usr_obj: models.BotUserModel = models.BotUserModel.objects.get_or_create(
            chat_id=request.data['chat_id'],
            defaults={
                'first_name': request.data['first_name'],
                'last_name': request.data['last_name'],
                'username': request.data['username'],
            })[0]

 

В параметре defaults передаются значения полей, которые будут записаны, если пользователя нет.

Затем, независимо от того, был пользователь только что создан или нет, мы обновляем значение поля updated на актуальное время, вызвав сохранение объекта. И возвращаем пустой ответ со статус-кодом 200:

        usr_obj.save()
        return Response(status=200)

 

Маршрут для API.

Добавим URL-адрес для отправки запроса. Перейдём в файл urls.py и в список urlpatterns отведённый для URL-паттернов нашего API добавим строку:

# Паттерны API
urlpatterns += [
    path('bot/get-file/', api.GetFilePath.as_view()),
    path('bot/create-user/', api.CreateBotUser.as_view()),
]

 

На этом создание API закончено, теперь необходимо написать в боте отправку запроса при выполнении команды.

Аватар автора

Автор

Иван Ашихмин

Программист, фрилансер и автор гайдов. Занимаюсь разработкой ботов, сайтов и не только.

Войдите, чтобы оставить комментарий.

Комментариев пока нет.