Попытка создать простой 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
в сериализаторах.