Попытка создать простой API с помощью Django Rest Framework

Я думаю, что что-то не так с импортом. ошибка ImproperlyConfigured: Включенный файл URLconf 'API_practice.urls' не содержит шаблонов. Если вы видите в файле допустимые шаблоны, то проблема, вероятно, вызвана циклическим импортом. Кодировал по учебнику https://medium.com/swlh/build-your-first-rest-api-with-django-rest-framework-e394e39a482c кодировал все построчно, делая ту же кодировку, но не помогло. Вот часть моего кода.

Я добавил свои установленные приложения в settings.py:

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

создан serializer.py:

from rest_framework import serializers
from .model import Hero

class HeroSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Hero
        fields = ('name', 'alias')

views.py:

from django.shortcuts import render
from rest_framework import viewsets
from django.views import View
from django.http import HttpResponse
from .serializers import HeroSerializer
from .models import Hero
# Create your views here.

class HeroViewSet(viewsets.ModelViewSet):
    queryset = Hero.objects.all().order_by('name')
    serializer_class = HeroSerializer

class IndexView(View):
    def get(self, request):
        return HttpResponse('This is Home Page!')

my_api/urls.py (урлы моего приложения):

from django.urls import include, path
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register(r'heroes', views.HeroViewSet)

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    path("home/", views.IndexView.as_view, name="home")]

my_API/urls.py (урлы моего проекта):

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('my_api.urls'))]

models.py:

from django.db import models

# Create your models here.

class Hero(models.Model):
    name = models.CharField(max_length=50)
    alias = models.CharField(max_length=50)
    
    def __str__(self):
        return self.name

Вы пропустили "s" в models из from .model import Hero в сериализаторах.

Вернуться на верх