Как установить django rest framework
Перед началом работы с Django нам естественно надо установить интерпретатор Python. Подоробнее об этом можно почитать здесь.
Существуют разные способы установки Django. Рассмотрим рекомендуемый способ.
Пакетный менеджер pip
Пакеты Django размещаются в центральном репозитории для большинства пакетов Python — Package Index (PyPI). И для установки из этого репозитория нам потребуется пакетный менеджер pip . Менеджер pip позволяет загружать пакеты и управлять ими. Обычно при установке python также устанавливается и менеджер pip. В этом случае мы можем проверить версию менеджера, выполнив в командной строке/терминале команду pip -V (V — с заглавной буквы):
C:\Users\eugen>pip -V pip 23.3.1 from C:\Users\eugen\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip (python 3.12) C:\Users\eugen>
Если pip не установлен, то мы увидим ошибку типа
"pip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
В этом случае нам надо установить pip. Для этого можно выполнить в командной строке/консоли следующую команду:
python -m ensurepip --upgrade
Если pip ранее уже был установлен, то можно его обновить с помощью команды
python -m pip install --upgrade pip
Установка виртуальной среды
Виртуальная среда или venv не является неотъемлимой частью разработки на Django. Однако ее рекомендуется использовать, так как она позволяет создать множество виртуальных сред Python на одной операционной системе. Благодаря виртуальной среде приложение может запускаться независимо от других приложений на Python.
В принципе можно запускать приложения на Django и без виртуальной среды. В этом случае все пакеты Django устанавливаются глобально. Однако что если после создания первого приложения выйдет новая версия Django? Если мы захотим использовать для второго проекта новую версию Django, то из-за глобальной установки пакетов придется обновлять первый проект, который использует старую версию. Это потребует некоторой дополнительной работы по обновлению, так как не всегда соблюдается обратная совместимость между пакетами. Если мы решим использовать для второго проекта старую версию, то мы лишиемся потенциальных преимуществ новой версии. И использование виртуальной среды как раз позволяет разграничить пакеты для каждого проекта.
Для работы с виртуальной средой в python применяется встроенный модуль venv
Итак, создадим вируальную среду. Вначале определим каталог для проектов django. Например, пусть это будет каталог C:\django . Прежде всего перейдем в терминале/командной строке в этот каталог с помощью команды cd.
cd C:\django
Затем для создания виртуальной среды выполним следующую команду:
python -m venv .venv
Модулю venv передается название среды, которая в данном случае будет называться «.venv». Для наименования виртуальных сред нет каких-то определенных условностей. Пример консольного вывода:
C:\Users\eugen>cd C:\djangoПереход к папке будущей виртуальной среды C:\django>python -m venv .venvСоздание виртуальной среды C:\django>
После этого в текущей папке (C:\django) будет создан подкаталог «.venv».
Активация виртуальной среды
Для использования виртуальную среду надо активировать. И каждый раз, когда мы будем работать с проектом Django, связанную с ним виртуальную среду надо активировать . Например, активируем выше созданную среду, которая располагается в текущем каталоге в папке .venv. Процесс активации немного отличается в зависимости от операционной системы и от того, какие инструменты применяются. Так, в Windows можно использовать командную строку и PowerShell, но между ними есть отличия.
Активация в Windows в коммандной строке
Если наша ОС — Windows, то в папке .venv/Scripts/ мы можем найти файл activate.bat ), который активирует виртуальную среду. Так, в Windows активация виртуальной среды в коммандной строке будет выглядеть таким образом:
.venv\Scripts\activate.bat
Активация в Windows в PowerShell
Также при работе на Windows в папке .venv/Scripts/ мы можем найти файл activate.ps1 , который также активирует виртуальную среду, но применяется только в PowerShell. Но при работе с PowerShell следует учитывать, что по умолчанию в этой оболочке запрещено применять скрипты. Поэтому перед активацией среды необходимо установить разрешения для текущего пользователя. Поэтому для активации виртуальной среды в PowerShell необходимо выполнить две следующих команды:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser .venv\Scripts\Activate.ps1
Активация в Linux и MacOS
Для Linux и MacOS активация будет производиться с помощью следующей команды:
source .venv/bin/activate
Далее я буду приводить примеры на основе командной строки Windows, однако все остальные примеры не будут зависеть от того, что используется — PowerShell или командная строка, Windows, Linux или MacOS. В любом случае после успешной активации слева от текущего каталога мы увидим в скобках название виртуальной среды:
C:\Users\eugen>cd C:\django C:\django>python -m venv .venv C:\django>.venv\Scripts\activate.batАктивация виртуальной среды (.venv) C:\django> Виртуальная среда активирована
Установка Django
После активации виртуальной среды для установки Django выполним в консоли следующую команду
python -m pip install Django
Она устанавливает последнюю версию Django.
(.venv) C:\django>python -m pip install Django Collecting Django Using cached Django-4.1-py3-none-any.whl (8.1 MB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB) Collecting tzdata Using cached tzdata-2022.1-py2.py3-none-any.whl (339 kB) Collecting asgiref=3.5.2 Using cached asgiref-3.5.2-py3-none-any.whl (22 kB) Installing collected packages: tzdata, sqlparse, asgiref, Django Successfully installed Django-4.1 asgiref-3.5.2 sqlparse-0.4.2 tzdata-2022.1 (.venv) C:\django>
Если нам интересует конкретная версия Django, то мы можем указать ее при установке:
python -m pip install django~=4.0.0
Проверка установки
Чтобы убедиться, что все установлено правильно, мы можем перейти к интерпретатору python. Для этого введем в терминале команду
python
И затем выполним последовательно следующие две инструкции:
>>> import django >>> print(django.get_version())
Консольный вывод в моем случае:
(.venv) C:\django>python Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> print(django.get_version()) 4.1 >>>
Деактивация виртуальной среды
После окончания работы с виртуальной средой мы можем ее деактивировать с помощью команды:
Django REST Framework
Django REST framework is a powerful and flexible toolkit for building Web APIs.
Some reasons you might want to use REST framework:
- The Web browsable API is a huge usability win for your developers.
- Authentication policies including packages for OAuth1a and OAuth2.
- Serialization that supports both ORM and non-ORM data sources.
- Customizable all the way down — just use regular function-based views if you don’t need the morepowerfulfeatures.
- Extensive documentation, and great community support.
- Used and trusted by internationally recognised companies including Mozilla, Red Hat, Heroku, and Eventbrite.
Funding
REST framework is a collaboratively funded project. If you use REST framework commercially we strongly encourage you to invest in its continued development by signing up for a paid plan.
Every single sign-up helps us make REST framework long-term financially sustainable.
Requirements
REST framework requires the following:
- Python (3.6, 3.7, 3.8, 3.9, 3.10, 3.11)
- Django (3.0, 3.1, 3.2, 4.0, 4.1, 4.2)
We highly recommend and only officially support the latest patch release of each Python and Django series.
The following packages are optional:
- PyYAML, uritemplate (5.1+, 3.0.0+) — Schema generation support.
- Markdown (3.0.0+) — Markdown support for the browsable API.
- Pygments (2.4.0+) — Add syntax highlighting to Markdown processing.
- django-filter (1.0.1+) — Filtering support.
- django-guardian (1.1.1+) — Object level permissions support.
Installation
Install using pip , including any optional packages you want.
pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support
. or clone the project from github.
git clone https://github.com/encode/django-rest-framework
Add ‘rest_framework’ to your INSTALLED_APPS setting.
INSTALLED_APPS = [ . 'rest_framework', ]
If you’re intending to use the browsable API you’ll probably also want to add REST framework’s login and logout views. Add the following to your root urls.py file.
urlpatterns = [ . path('api-auth/', include('rest_framework.urls')) ]
Note that the URL path can be whatever you want.
Example
Let’s take a look at a quick example of using REST framework to build a simple model-backed API.
We’ll create a read-write API for accessing information on the users of our project.
Any global settings for a REST framework API are kept in a single configuration dictionary named REST_FRAMEWORK . Start off by adding the following to your settings.py module:
REST_FRAMEWORK =
Don’t forget to make sure you’ve also added rest_framework to your INSTALLED_APPS .
We’re ready to create our API now. Here’s our project’s root urls.py module:
from django.urls import path, include from django.contrib.auth.models import User from rest_framework import routers, serializers, viewsets # Serializers define the API representation. class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ['url', 'username', 'email', 'is_staff'] # ViewSets define the view behavior. class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer # Routers provide an easy way of automatically determining the URL conf. router = routers.DefaultRouter() router.register(r'users', UserViewSet) # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ path('', include(router.urls)), path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) ]
You can now open the API in your browser at http://127.0.0.1:8000/, and view your new ‘users’ API. If you use the login control in the top right corner you’ll also be able to add, create and delete users from the system.
Quickstart
Can’t wait to get started? The quickstart guide is the fastest way to get up and running, and building APIs with REST framework.
Development
See the Contribution guidelines for information on how to clone the repository, run the test suite and contribute changes back to REST Framework.
Support
For support please see the REST framework discussion group, try the #restframework channel on irc.libera.chat , or raise a question on Stack Overflow, making sure to include the ‘django-rest-framework’ tag.
For priority support please sign up for a professional or premium sponsorship plan.
Security
Security issues are handled under the supervision of the Django security team.
Please report security issues by emailing security@djangoproject.com.
The project maintainers will then work with you to resolve any issues where required, prior to any public disclosure.
License
Copyright © 2011-present, Encode OSS Ltd. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS «AS IS» AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Documentation built with MkDocs.
Разработка Web API на Django с помощью Django REST framework: от создания моделей до тестирования
Django REST framework (DRF) — это мощный и гибкий инструмент для создания Web API на основе Django. Он предоставляет удобные средства для создания RESTful API, поддерживает аутентификацию, авторизацию, сериализацию, валидацию и другие функции.
В этой статье мы рассмотрим, как использовать Django REST framework для создания Web API на базе Django.
Шаг 1: Установка Django REST framework
Первым шагом является установка Django REST framework. Вы можете установить его с помощью pip:
pip install djangorestframework
Шаг 2: Создание проекта Django
Для создания проекта Django используйте команду:
django-admin startproject myproject
Шаг 3: Создание приложения Django
Создайте приложение Django с помощью команды:
python manage.py startapp myapp
Шаг 4: Настройка Django REST framework
INSTALLED_APPS = [ . 'rest_framework', 'myapp', ]
Добавьте REST framework middleware в MIDDLEWARE в файле settings.py:
MIDDLEWARE = [ . 'rest_framework.middleware.AuthenticationMiddleware', 'rest_framework.middleware.AuthorizationMiddleware', ]
Шаг 5: Создание модели Django
Определите модель Django в файле models.py вашего приложения:
from django.db import models class Product(models.Model): name = models.CharField(max_length=100) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name
Шаг 6: Создание сериализатора Django REST framework
Определите сериализатор Django REST framework в файле serializers.py вашего приложения:
from rest_framework import serializers from myapp.models import Product class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = ['id', 'name', 'description', 'price', 'created_at', 'updated_at']
Шаг 7: Создание представления Django REST framework
Определите представление Django REST framework в файле views.py вашего приложения:
from rest_framework import generics from myapp.models import Product from myapp.serializers import ProductSerializer class ProductList(generics.ListCreateAPIView): queryset = Product.objects.all() serializer_class = ProductSerializer class ProductDetail(generics.RetrieveUpdateDestroyAPIView): queryset = Product.objects.all() serializer_class = Product
Шаг 8: Настройка маршрутов Django REST framework
Определите маршруты Django REST framework в файле urls.py вашего приложения:
from django.urls import path from myapp.views import ProductList, ProductDetail urlpatterns = [ path('products/', ProductList.as_view(), name='product-list'), path('products//', ProductDetail.as_view(), name='product-detail'), ]
Шаг 9: Запуск приложения Django
Запустите приложение Django с помощью команды:
python manage.py runserver
Шаг 10: Тестирование Web API
Откройте веб-браузер и перейдите по адресу http://127.0.0.1:8000/products/. Вы должны увидеть список всех продуктов.
Чтобы создать новый продукт, отправьте POST-запрос на http://127.0.0.1:8000/products/ с данными в формате JSON:
Чтобы получить детали конкретного продукта, отправьте GET-запрос на http://127.0.0.1:8000/products/1/, где 1 — идентификатор продукта.
Чтобы обновить продукт, отправьте PUT-запрос на http://127.0.0.1:8000/products/1/ с данными в формате JSON:
Чтобы удалить продукт, отправьте DELETE-запрос на http://127.0.0.1:8000/products/1/.
В этой статье мы рассмотрели, как использовать Django REST framework для создания Web API на базе Django. Django REST framework предоставляет удобные средства для создания RESTful API, поддерживает аутентификацию, авторизацию, сериализацию, валидацию и другие функции. С его помощью вы можете быстро и легко создавать мощные и гибкие Web API на базе Django.
Создайте свой первый REST API с Django Rest Framework
Фреймворк Django REST — это мощный и гибкий набор инструментов для создания веб-API.
Некоторые причины, по которым вы можете захотеть использовать REST framework:
- Поддержка Web browsable API — огромный выигрыш в удобстве использования для ваших разработчиков.
- Политики аутентификации, включая пакеты для OAuth1a и OAuth2.
- Сериализация, поддерживающая как ORM, так и не-ORM источники данных.
- Настраиваемая по всему пути — просто используйте обычные представления на основе функций, если вам не нужны болеемощныевозможности.
- Расширенная документация и большая поддержка сообщества.
- Используется и пользуется доверием всемирно известных компаний, включая Mozilla, Red Hat, Heroku и Eventbrite.
Определение и причины использования фреймворка REST можно найти на домашней странице Django Rest Framework
В этом руководстве мы создадим REST API с помощью Django Rest Framework. API выполняет CRUD-операции приложения со списком Todo, разработанного в Django Framework.
Подготовка
Перед началом работы над учебником необходимо выполнить следующие настройки:
- Django Framework
- Веб-приложение Django, работающее на вашем сервере localhost.
Если вы новичок в разработке Django и до этого не создавали веб-приложений на Django, пожалуйста, просмотрите следующие ссылки:
- Django Framework Installation
- Create a New Django Application
Также необходимо создать пользователя, чтобы мы могли добавлять данные в базу данных. Для этого необходимо создать суперпользователя. См. ссылку ниже:
После всего этого, предполагая, что у вас есть работающее веб-приложение djnago, давайте начнем разработку REST API с помощью Django Rest Framework
Установка Django Rest Framework
Первым делом нам нужно установить Django Rest Framework из pip. Введите следующую команду в терминале:
pip install djangorestframework
После установки Django Rest Framework добавьте его в свой файл настроек ( settings.py )
INSTALLED_APPS = [ . 'rest_framework', ]
Создайте приложение для вашего API
Создание API — это также создание другого веб-приложения Django. Поэтому из вашего терминала создайте приложение:
python manage.py startapp api
Сейчас, когда вы создали приложение с именем «api», вы можете видеть папку с различными файлами, такими как admin.py, apps.py, models.py, tests.py и views.py. После создания приложения вам нужно зарегистрировать его в настройках как установленное приложение.
INSTALLED_APPS = [
.
‘api.apps.ApiConfig’,
‘rest_framework’,
]
Создание модели
Сначала создадим модель для приложения todo. Добавьте следующий код в ваш models.py:
from django.db import models class Task(models.Model): title = models.CharField(max_length=200) completed = models.BooleanField(default=False, blank=True, null=True) def __str__(self): return self.title
API списка todo добавляет задачи и статус задач.
Создание сериализатора
Здесь мы имеем дело с данными, хранящимися в базе данных, которые необходимо получить через веб-запросы с помощью API. Поэтому лучшим способом получения данных является форма JSON. Поэтому нам нужно разобрать данные из базы данных в формате JSON. Эту работу выполняет сериализатор. Создайте файл с именем (serializer.py)
from rest_framework import serializers from .models import Task class TaskSerializer(serializers.ModelSerializer): class Meta: model = Task fields = '__all__'
Настройка URL-адресов
Мы настраиваем URL следующим образом.
- Create URL for api web app
- Link that api url to Django Project’s main URL
В urls.py добавьте следующий путь URL:
urlpatterns = [ path('admin/', admin.site.urls), path('api/',include('todo_api.urls')), ]
Сейчас в папке api, которая является вашим приложением, создайте файл urls.py и добавьте в него следующие пути:
from django.urls import path from . import views urlpatterns = [ path('', views.apiOverview, name="api-overview"), path('task-list', views.taskList, name="task-list"), path('task-detail//', views.taskDetail, name="task-detail"), path('task-create/', views.taskCreate, name="task-create"), path('task-update//', views.taskUpdate, name="task-update"), path('task-delete//', views.taskDelete, name="task-delete"), ]
Создайте свой вид
Мы создали модели и сериализатор. Теперь наша задача — создать представление, в котором мы будем выполнять операции CRUD. Поскольку мы настроили URL-адреса.
Обзор API
В нашем представлении мы создадим первое представление, в котором будут перечислены все URL-адреса, которые будут раскрыты. Мы будем использовать декоратор api_view, предоставляемый фреймворком rest. Нам нужно импортировать TaskSerializer, который мы создали ранее. Сериализатор задач анализирует запрос из базы данных и представляет строки JSON
from rest_framework.decorators import api_view from rest_framework.response import Response from .serializers import TaskSerializer from .models import Task # Create your views here. @api_view(['GET']) def apiOverview(request): api_urls = < 'List': '/task-list/', 'Detail View': '/task-detail//', 'Create': '/task-create/', 'Update': '/task-update//', 'Delete': '/task-delete//', > return Response(api_urls)
Run your server and browse the url: http://127.0.0.1:8000/api/

Здесь перечислены все запросы, которые мы можем сделать к API. Далее мы увидим список задач, добавленных в приложение todo list. Перед этим перейдите на сайт администратора из браузера http://127.0.0.1:8000/admin/ и добавьте несколько задач.
Помните основы:
Чтобы добавлять элементы в базу данных, необходимо сначала зарегистрировать свою модель Task в файле admin.py
from django.contrib import admin from .models import Task # Register your models here. admin.site.register(Task)
API TaskList
Сейчас в нашем представлении мы создадим еще один метод для добавления в список всех элементов из базы данных.
@api_view(['GET']) def taskList(request): tasks = Task.objects.all() serializer = TaskSerializer(tasks, many=True) return Response(serializer.data)
Этот API можно просматривать из браузера по следующему URL: http://127.0.0.1:8000/api/task-list
Вы увидите следующие ответы:

Этот api запрос перечислил все пункты в вашем списке todo. Теперь для просмотра отдельных элементов создадим еще один метод.
Детализация задачи
Этот метод API выведет список деталей элементов на основе id.
@api_view(['GET']) def taskDetail(request, pk): tasks = Task.objects.get(id=pk) serializer = TaskSerializer(tasks, many=False) return Response(serializer.data)
HTTP 200 OK Allow: OPTIONS, GET Content-Type: application/json Vary: Accept
Создание задачи
Этот метод создавал задания, т.е. сохранял элементы в базе данных:
@api_view(['POST']) def taskCreate(request): serializer = TaskSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data)

Обновление и удаление задач
Сейчас мы создадим два метода для обновления и удаления элементов в списке todo. Приведенный ниже код обеспечит возможность обновления и удаления элементов через URL.
@api_view(['POST']) def taskUpdate(request, pk): task = Task.objects.get(id=pk) serializer = TaskSerializer(instance=task, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) @api_view(['DELETE']) def taskDelete(request, pk): task = Task.objects.get(id=pk) task.delete() return Response("Task Deleted Successfully")