Учебное пособие по опросам является официальным гидом по Джанго. В качестве забавного упражнения я хотел показать, как мало кода требуется, чтобы преобразовать его в надежный API, используя Django Rest Framework .
В этом уроке предполагается, что у вас уже установлен Python3 и Pipenv. Вы можете найти подробный Инструкции здесь Анкет
Монтаж
Чтобы начать, нам нужно создать новый каталог для нашего кода, установить структуру Django и Django REST, создайте новый проект конфигурация
а затем новое приложение Опросы
Анкет
$ mkdir polls && cd polls $ pipenv install django djangorestframework $ pipenv shell (polls) $ django-admin startproject config . (polls) $ python manage.py startapp polls
Обновите наш настройки.py
Файл с нашими новыми приложениями, а также отрегулируйте часовой пояс, так как каждый опрос проходит временем. Я основан на восточном побережье США, поэтому мой часовой пост Нью-Йорк
. Вот список Все часовые пояса Анкет
# config/settings.py ... INSTALLED_APPS = [ ... 'rest_framework', 'polls', ] TIME_ZONE = 'America/New_York'
Единственный код, который переносится из оригинального учебника по опросам, – это модель базы данных. Вот это для вопроса, а затем связанный выбор.
# polls/models.py import datetime from django.db import models from django.utils import timezone class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now def __str__(self): return self.question_text class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text
Теперь нам нужно установить наши URL. Мы поместим наши опросы в API/
следующим образом.
# config/urls.py from django.urls import include, path from django.contrib import admin urlpatterns = [ path('api/', include('polls.urls')), path('admin/', admin.site.urls), ]
В пределах опросы
Приложение нам нужно создать urls.py
и serializers.py
файлы
(polls) $ touch polls/urls.py (polls) $ touch polls/serializers.py
Для Опросы/urls.py
Файл мы будем использовать виды Чтобы упростить код.
# polls/urls.py from django.urls import path from .views import QuestionViewSet from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register('', QuestionViewSet, basename='questions') urlpatterns = router.urls
Наш сериализатор раскрывает все поля плюс id
Поле Django автоматически добавляет для нас.
# polls/serializers.py from rest_framework import serializers from .models import Question class QuestionSerializer(serializers.ModelSerializer): class Meta: fields = ( 'id', 'question_text', 'pub_date', ) model = Question
И наше мнение пока разоблачит все с DRF’s ModelViewSet
Анкет
# polls/views.py from rest_framework import viewsets from . import models from . import serializers class QuestionViewSet(viewsets.ModelViewSet): queryset = models.Question.objects.all() serializer_class = serializers.QuestionSerializer
В качестве последнего шага нам нужно сделать новый файл миграции и перенести изменения в нашу базу данных.
(polls) $ python manage.py makemigrations polls (polls) $ python manage.py migrate
Были сделаны! Вот и все. Теперь у нас есть функционирующий, полный API для учебника из опросов. Но мы не заполнили его каким -либо контентом. В учебном пособии по опросам они делают это в оболочке Django, но я считаю, что администратор Django гораздо легче работать. Первое обновление нашего admin.py
Файл, поэтому появляется приложение опросов.
# polls/admin.py from django.contrib import admin from .models import Question from .models import Choice admin.site.register(Question) admin.site.register(Choice)
Затем создайте суперпользователь
Учетная запись и запустите локальный сервер.
$ python manage.py createsuperuser $ python manage.py runserver
Теперь перейдите к http://127.0.0.1:8000/admin чтобы залогиниться.
Добавьте новые вопросы, нажав «+ Добавить» рядом с вопросами.
Затем добавьте опцию «Выбор», нажав «+ Добавить» рядом с вариантами на домашней странице администратора.
Теперь мы можем перейти к нашему фактическому API, для которого DRF предоставляет хороший графический вид обоих взглядов в списке в http://127.0.0.1:8000/api/ и подробный вид в http://127.0.0.1:8000/api/1/ Анкет
Следующие шаги
Официальное руководство по опросам может быть ошеломляющим для начинающих, но в конце дня не так много кода. И благодаря мощности DRF мы можем создавать веб -API с шокирующе небольшой количеством кода, но все же имеют возможность изменить ситуацию по мере необходимости.
Оригинал: “https://dev.to/learndjango/django-polls-tutorial-api-p9a”