Использовать Django API легко благодаря встроенным шаблонам.

Вы можете легко использовать простые API без настройки внешнего интерфейса. Вот как использовать шаблоны Django для программирования API.

Использовать Django API легко благодаря встроенным шаблонам. Рисунок 1.

При использовании серверных технологий или фреймворков, таких как Django, Laravel или Node.js, для написания REST API вам необходимо получить дополнительные навыки внешнего интерфейса, используя такие фреймворки, как React, Angular, Vue, для использования конечных точек API. Но не все случаи такие. Вы можете использовать API в Django, используя доступные шаблоны.

Настройте проект Django и конечную точку API.

Первым шагом является создание папки проекта. Откройте терминал и создайте каталог для проекта.

mkdir Payment_wallet_project компакт-диск Payment_wallet_project

В этом руководстве вы создадите API для платежного кошелька.

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

Pipenv установить Django DjangorestFramework

Эта команда устанавливает необходимые библиотеки, а также создает виртуальную среду. Активируйте виртуальную среду с помощью команды ниже:

оболочка Pipenv

Создайте новый проект Django с именем PayApp.

оболочка Pipenv

Использование точки (.) в конце команды django-admin гарантирует, что этот проект не создаст дублирующую папку в каталоге проекта.

Создайте новое приложение Django в каталоге проекта.

кошелек startapp python Manage.py

Теперь продолжите создание приложения API, выполнив следующие действия.

Создайте платежный кошелек с помощью REST API

Откройте файл Wallet/models.py и найдите шаблоны кошелька и транзакций.

из django.db класс моделей импорта Wallet(models.Model): user = models.CharField(max_length=100) Balance = models.DecimalField(max_digits=10, decimal_places=2) date_created = models.DateTimeField(auto_now_add=True) date_modified = models.DateTimeField(auto_now=True) def __str__(self): return self.user class Transaction(models.Model): Wallet = models.ForeignKey(Wallet, on_delete=models.CASCADE) sum = models.DecimalField(max_digits=10, decimal_places=2) timestamp = models.DateTimeField(auto_now_add=True)

В папке кошелька создайте новый файл Serializers.py, программирующий сериализаторы кошелька и модели транзакций.

из rest_framework импортировать сериализаторы из .models import Wallet, класс транзакции WalletSerializer(serializers.ModelSerializer): class Meta: model = Wallet columns=”__all__” class TransactionSerializer(serializers.ModelSerializer): class Meta: model = Transaction field=”__all__”

Этот сериализатор просматривает все поля в кошельке и шаблон транзакции.

В Wallet/views.py напишите средства просмотра для обработки логики, реализующей функциональность кошелька, включая депозиты и снятие средств.

из дженериков импорта rest_framework, статус из rest_framework.response import Ответ из rest_framework.decorators импортировать действие из decimal import Decimal из .models import Wallet, транзакция из .serializers import WalletSerializer, класс TransactionSerializer WalletViewSet(viewsets.ModelViewSet): queryset = Wallet.objects. all() seriesizer_class = WalletSerializer @action(detail=True, методы=(‘post’)) def депозит(self, request, pk=None): Wallet = self.get_object() sum = Decimal(request.data(‘amount) ‘)) Wallet.balance += количество Wallet.save() сериализатор = WalletSerializer(wallet) return Response(serializer.data) @action(detail=True, методы=(‘post’)) def отозвать(self, request, pk = Нет): Wallet = self.get_object() sum = Decimal(request.data(‘amount’)) if Wallet.balance

Затем определите URL-маршрут для API, создав файл Wallet/urls.py:

из пути импорта django.urls, включите из rest_framework.routers import DefaultRouter из .views import WalletViewSet, TransactionViewSet, Wallet_view router = DefaultRouter() router.register(r’wallets’, WalletViewSet, basename=”wallets”) router.register(r ‘transactions’, TransactionViewSet, basename=”transactions”) urlpatterns = (path(‘api/’, include(router.urls)), path(‘wallets//deposit/’, WalletViewSet.as_view({‘post’: ‘ депозит’}), name=”wallet-deposit”), path(‘wallets//withdraw/’, WalletViewSet.as_view({‘post’: ‘withdraw’}), name=”wallet-withdraw”), )

В urls.py проекта включите URL-адрес приложения:

из администратора импорта django.contrib из пути импорта django.urls, включите urlpatterns = (path(‘admin/’, admin.site.urls), path(”, include(‘wallet.urls’)), )

В файле PayApp/settings.py добавьте приложения Wallet и rest_framework в список INSTALLED_APPS.

INSTALLED_APPS = ( “django.contrib.admin”, “django.contrib.auth”, “django.contrib.contenttypes”, “django.contrib.sessions”, “django.contrib.messages”, “django.contrib.staticfiles” , “rest_framework”, # новый “кошелек”, # новый )

Это зарегистрирует кошелек приложения и rest_framework для приложения проекта Django.

Используйте API с шаблонами Django

Теперь вы будете использовать шаблоны Django для создания простого интерфейса для использования API. Создайте файл Wallet.html в папке Wallet/templates/ и добавьте приведенный ниже HTML-код:

Действия с балансом пользователя кошелька {{ Wallet.user }} {{ Wallet.balance }} Загрузка.

Пожалуйста, подождите, пока депозит обрабатывается.

{% csrf_token %}Депозит{% csrf_token %}Вывод средств

Этот HTML-файл показывает API перевода и вывода средств в красивом пользовательском интерфейсе, разработанном Bootstrap.

Взаимодействие пользователя с формами

В HTML-файле создайте тег сценария и добавьте следующий код в обработчик событий отправки формы денежного перевода.

Затем добавьте прослушиватель событий для отправки формы вывода, используя приведенный ниже код:

Прослушиватель событий отвечает за обработку форм ввода и вывода средств ( #deposit-form & #withdraw-form ).

URL-адрес получения запроса предназначен для объединения URL-адресов для действий по переводу и выводу средств.

Ответы JSON на задачи перевода и вывода средств затем анализируются для обновления баланса ( data.balance ). Далее они будут отформатированы и отображены на этой странице.

В Wallet/views.py добавьте следующее обновление, чтобы отобразить страницу Wallet.html:

from django.shortcuts import render def Wallet_view(request): # Получить кошелек для отображения Wallet = Wallet.objects.first() return render(request, ‘wallet.html’, {‘wallet’: Wallet})

В этом примере вы будете использовать метод запроса first() для выбора кошелька пользователя в демонстрационных целях.

Обновите файл urls.py, добавив путь к Wallet_view следующим образом:

from .views import Wallet_view urlpatterns = ( . path(‘home/’, Wallet_view, name=”wallet-page”), )

Доступ к странице кошелька осуществляется с: .

Когда все настроено и работает как положено, выполните команды makemigrations иmigrate. Наконец, запустите приложение:

python Manage.py Makemigrations Python Manage.py Миграция Python Manage.py RunServer

Чтобы получить доступ к конечным точкам API, перейдите по адресу .

Результат оказался настолько хорош, насколько мы ожидали:

Использовать Django API легко благодаря встроенным шаблонам. Рисунок 2.

Перейдите на localhost для взаимодействия с кошельком.

Результат:

Использовать Django API легко благодаря встроенным шаблонам. Рисунок 3.

Этот кошелек показывает баланс вашего счета и дает вам возможность вносить или снимать деньги.

Некоторые ограничения при использовании API шаблонов Django:

  1. Ограниченная гибкость.
  2. Асинхронные запросы не поддерживаются.
  3. Ограниченная обработка ошибок.

В целом, шаблоны Django позволяют программистам сосредоточиться на создании многократно используемого и удобного в обслуживании кода. Однако из-за своих ограничений шаблоны Django могут быть не лучшим выбором при масштабном использовании API. Клиентские платформы, такие как React, по-прежнему полезны при создании масштабируемых приложений.

В приведенной выше статье вы познакомились с тем, что «использовать Django API легко благодаря встроенным шаблонам». СоветыНадейтесь, что эта статья вам поможет! Если эта статья кажется вам интересной и полезной, не забудьте поделиться ею. Спасибо!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *