Рубрики
Без рубрики

Django Olports Tutorial API API

Учебником из опросов является официальное руководство по Джанго. В качестве забавного упражнения я хотел показать, как Little Co … Tagged с Django, Python, Tutorial, новичками.

Учебное пособие по опросам является официальным гидом по Джанго. В качестве забавного упражнения я хотел показать, как мало кода требуется, чтобы преобразовать его в надежный 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”