Привет, кодеры! Если вы здесь, значит, вы хорошо знаете фреймворк Django и то, как он работает. В этой статье я расскажу о вашей Django Rest Framework. По сути, мы обсудим, что такое Django Rest Framework и как вы можете создать Rest API с помощью этой Rest Framework.

Что такое Django Rest Framework?

Django rest framework — это набор инструментов или пакет, который позволяет с легкостью создавать спокойный веб-API. Его легко использовать, если вы знаете фреймворк Django. Потому что все мы знаем, что API — это интерфейс, который помогает нам взаимодействовать с другим программным обеспечением на рынке. Таким образом, знание API будет полезно для вас как для разработчика.

Создание простого проекта Django:

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

Чтобы начать новый проект в Django, просто введите следующую команду в терминале. Давайте создадим проект под названием "movie_api".

django-admin startproject movie_api

Затем он создаст папку с именем movie_api, содержащую ваш проект. Здесь я использую PyCarm IDE, потому что он в основном предназначен для задач, связанных с Python. Теперь войдите в папку «movie_api» с помощью команды «cd movie_api» в терминале. Запустите следующий код, чтобы проверить, правильно ли работает ваш проект.

python manage.py runserver

Зайдите в браузер и введите URL http://127.0.0.1:8000/ в адресной строке. Если вы увидите что-то подобное ниже, поздравляю, вы успешно создали свой проект.

Создание приложения:

Теперь давайте создадим приложение, в котором мы настроим наши файлы, такие как models.py, views.py и т. д. Давайте создадим ваше приложение, используя следующую команду:

python manage.py startapp movie

Помните одну вещь: имя папки нашего основного проекта — «movie_api», а приложение, которое мы только что создали, называется «movie». Теперь, когда вы создали свое приложение, вы должны добавить это приложение в список movie_api/settings.py. Здесь под массивом INSTALLED_APPS вам нужно добавить только что созданное приложение.

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'movie', # Newly Created app ]

Теперь давайте создадим поле нашей модели, которое нам нужно для нашего списка фильмов.

фильм/models.py

from django.db import models class Movie(models.Model): title = models.CharField(max_length=100) category = models.CharField(max_length=100, blank=True) date_released = models.DateField() price = models.IntegerField() def __str__(self): return self.title

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

python manage.py makemigrations and then python manage.py migrate

Теперь, чтобы отобразить вашу базу данных под управлением django, вам нужно настроить файл movie/admin.py.

фильм/admin.py

from django.contrib import admin from .models import * admin.site.register(Movie)

Теперь давайте настроим наше администрирование django... Чтобы получить доступ к панели администратора Django, вам необходимо создать учетную запись суперпользователя. Чтобы создать суперпользователя для доступа к панели администратора django, введите следующую команду в оболочке или терминале.

python manage.py createsuperuser

Теперь вы вводите указанную выше команду, затем она попросит вас ввести имя пользователя, адрес электронной почты и пароли. Просто следуйте инструкциям и создайте свою учетную запись. После того, как вы создали своего суперпользователя, вы можете получить доступ к панели администратора django.

Чтобы получить доступ к панели администратора django, перейдите по адресу 127.0.0.1:8000/ admin.

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

Теперь давайте создадим несколько объектов через панель администратора. Позже мы создадим наш REST API этих данных с помощью Django Rest Framework.

На изображении выше вы можете видеть, что я только что создал объект 5 Movie, и теперь мы покажем его на нашей домашней странице. После этого мы создадим API этих данных. Но перед этим давайте настроим наш файл urls.py и templates.

Теперь создайте файл urls.py в приложении movie и свяжите этот urls.py с movie_api/urls.py.

movie_api/urls.py

from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('movie.urls')), ]

А теперь давайте настроим файл нашего основного приложения urls.py.

фильм/urls.py

from django.urls import path from movie import views urlpatterns = [ path(' ', views.home, name="home"), ]

Теперь давайте создадим нашу домашнюю функцию в файле movie/views.py. Где мы будем вызывать наш шаблон home.html, который мы создадим после настройки файла views.py.

фильм /views.py

from django.shortcuts import render from .models import * def home(request): movies = Movie.objects.all() context = { 'movies': movies } return render(request, 'movie/home.html', context)

Теперь давайте создадим папки с именем templates/movie/ внутри папки вашего приложения для просмотра фильмов. Затем создайте файл с именем home.html. Потому что здесь наша главная задача — создать REST API, поэтому я не буду тратить слишком много времени на разработку этого домашнего шаблона. В этом home.html у нас будет простая таблица с загрузочным внешним видом. где мы будем получать наши объекты Movie.

фильм/шаблоны/фильм/home.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Movie REST</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> </head> <body> <!--Navbar--> <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <div class="container"> <a class="navbar-brand" href="#">Movie API</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item active"> <a class="nav-link" href="#">API</a> </li> </ul> </div> </div> </nav> <div class="container"> <div> <h1>Movies Table</h1> <table class="table table-striped table-dark"> <thead> <tr> <th scope="col">Name</th> <th scope="col">Category</th> <th scope="col">Release Date</th> <th scope="col">Price(INR)</th> </tr> </thead> <tbody> {% for movie in movies %} <tr> <th scope="row">{{movie.title}}</th> <td>{{movie.category}}</td> <td>{{movie.date_released}}</td> <td>{{movie.price}}</td> </tr> {% endfor %} </tbody> </table> </div> </div> </body> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> </html>

Теперь снова запустите свой сервер, и вы увидите что-то вроде этого.

В приведенном выше примере вы можете видеть, что наша таблица извлекла все данные из объектов нашей модели. Теперь мы собираемся создать основной раздел нашего блога. Теперь мы можем создать наш REST API с помощью Django Rest Framework.

Теперь мы создадим наш REST API, и наш URL будет:

Теперь давайте начнем наше руководство по REST API с установки и настройки Django Rest Framework.

Установка и настройка Django Rest Framework:

установите пакет django rest framework, используя следующую команду:

pip install djangorestframework

Теперь добавьте rest_framework в INSTALLED_APPS в файле settings.py.

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'movie', 'rest_framework', ]

В Django Rest Framework мы используем в основном 4 типа запросов, т. е. GET, POST, PUT и DELETE. Сначала мы собираемся создать наш API просмотра, который будет отображать весь наш фильм в структурированном формате.

В movie/views.py вам нужно импортировать некоторые модули и классы.

from rest_framework.decorators import api_view from rest_framework.response import Response

Выше вы можете видеть, что мы импортировали api_view, где мы определим, какие запросы мы будем использовать в функциях представления. Затем мы импортировали Response, что позволит нам получить доступ к интерфейсу Django rest framework.

Теперь вам нужно создать файл serializers.py в папке movie. В serializers.py мы определим, какую модель мы хотим сериализовать.

фильм/serializers.py

from rest_framework import serializers from .models import Movie class MovieSerializers(serializers.ModelSerializer): class Meta: model = Movie fields = '__all__'

В приведенном выше коде вы можете видеть, что наш код очень похож на форму модели. Где мы сериализовали все поля нашей модели Movie. Теперь импортируйте этот файл в свой файл movie/views.py.

from .serializers import MovieSerializers

Теперь мы готовы определить нашу функцию и URL-адрес для создания REST API.

Создание API (ЧИТАТЬ):

Теперь давайте создадим наш API, который будет отображать список всех наших фильмов в структурированном формате. Чтобы создать API, сначала нам нужно определить функцию в views.py. Во-первых, позвольте мне показать вам функцию, которую я определил для создания API.

фильм /views.py

@api_view(['GET']) def MovieList(request): movies = Movie.objects.all() serializer = MovieSerializers(movies, many=True) return Response(serializer.data)

В приведенной выше функции MovieList мы использовали запрос 'GET', который покажет вам список, который доступен только для чтения. При этом мы назвали все объекты, которые хотим определить в нашем API. Затем мы использовали функцию MovieSerializersn, где мы определили переменную фильмов. В этом фильме мы сохранили данные всех объектов, а затем many="true", что означает поле, которое мы хотим отобразить в нашем списке API.

В последнем мы просто вернули функцию Response, которая будет использовать переменную сериализатора для отображения этого в Django Rest Framework. Теперь нам нужно настроить наш путь URL, где мы определим наш путь к этому API. Добавьте следующий путь в файле urls.py

фильм/urls.py

path('api/', views.MovieList, name='api'),

Теперь перейдите по соответствующему URL-адресу: https://127.0.0.1:8000/api, и вы увидите, что ваш API списка фильмов успешно создан следующим образом:

API — Добавление объекта (CREATE)

Чтобы добавить данные через API, мы должны использовать ответ POST. Позвольте мне сначала показать вам мой код, а затем я объясню вам.

фильм /views.py

@api_view(['POST']) def MovieCreate(request): serializer = MovieSerializers(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data)

В приведенном выше коде мы использовали запрос POST, а затем сохраняем запрошенные данные в сериализованном виде. И затем позже, если форма действительна, мы сохраним ее в нашей базе данных. В последнем мы вернули объект Response так же, как и предыдущий.

Теперь добавьте следующий URL-адрес в файл фильма/urls.py.

path('api/create/', views.MovieCreate, name="api_create"),

Теперь перейдите по URL-адресу: https://127.0.0.1:8000/ api/create, после чего вы увидите такую ​​форму:

А затем нажмите на сообщение… Он добавит данные в базу данных и отобразит их в вашем списке API следующим образом:

API — Обновление объекта (UPDATE)

Теперь давайте обновим наши данные через REST Framework. Сначала позвольте мне показать вам мой код, а затем я объясню вам.

фильмы /views.py

@api_view(['POST']) def MovieUpdate(request, pk): movie = Movie.objects.get(id=pk) serializer = MovieSerializers(instance=movie, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data)

Здесь мы также используем запрос POST, потому что нам нужно отправить данные, чтобы обновить наши данные. Он имеет ту же структуру кода, что и Создание, но здесь нам нужно открыть конкретный объект, используя его "id". Затем мы введем наши обновленные данные и нажмите на пост.

Теперь добавьте следующий путь в ваш urls.py для доступа к этой функции.

фильм/urls.py

path('api/update/<str:pk>/', views.MovieUpdate, name="api_update"),

В приведенном выше URL-адресе вам нужно вставить идентификатор соответствующего сообщения в адресной строке, данные которого вы хотите обновить.

На изображении выше вы можете видеть, что мы обновляем наш объект фильма с 'id'=1. отредактируйте данные, которые вы хотите обновить, и ваши данные будут успешно обновлены.

API — Удаление объекта(DELETE)

Теперь мы собираемся удалить данные через Django Rest Framework. Но сначала позвольте мне показать вам мой код.

фильм /views.py

@api_view(['DELETE']) def MovieDelete(request, pk): movie = Movie.objects.get(id=pk) movie.delete() return redirect('api')

В приведенном выше коде мы вызвали запрос DELETE. Здесь нам не нужно сериализовать наши данные. мы только что вызвали объект через его id и сохранили его в переменной фильма. Теперь вам нужно вызвать функцию delete(), чтобы удалить вызываемый объект.

Теперь вам нужно добавить следующий URL-адрес для доступа к функции удаления:

path('api/delete/<str:pk>/', views.MovieDelete, name="api_delete"),

Вместо ‹str:pk› вставьте идентификационный номер. объекта, который вы хотите удалить. Теперь перейдите по указанному выше URL-адресу, и вы увидите страницу, подобную этой.

Ваш объект успешно удален из вашей базы данных и списка API.

Это все на сегодня. Если вы хотите узнать более продвинутую тему, вы можете следовать документации Django REST: Нажмите здесь (чтобы прочитать)

Читайте также: Аутентификация Django — зарегистрируйтесь, войдите и выйдите (Читайте здесь)

Я объяснил все основные вещи и термины, которые вам нужно понять в Django rest framework. Теперь вы можете узнать больше о фреймворке отдыха Django, используя свое любопытство.

Если вам понравилась эта статья, не забудьте поделиться этой статьей со своими друзьями и группами в социальных сетях.

Спасибо, чтобы прочитать…

Первоначально опубликовано на https://www.codechit.com 19 июля 2020 г.