Я пытаюсь создать Rest_Api на основе класса в Python django, но выдает ошибку

Вот код моего файла Views.py:

from django.shortcuts import render
from.models import*
from . serializers import ANI_News_DetailSerializer
from rest_framework.decorators import APIView
from rest_framework.response import Response
from rest_framework import status
    
    class NewsList(APIView):
        def get(self, request):
            news = ANI_News_Detail.objects.all()
            serializer = ANI_News_DetailSerializer(news, many=True)
            return Response(serializer.data)
    
        def post(self,request):
            serializer = ANI_News_DetailSerializer(data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data,status=status.HTTP_201_CREATED)
            return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

Это файл Apps url.py-:

from pathlib import Path
from django.urls import path
from django.conf.urls.static import static
from django.conf import settings
#from rest_framework.urlpatterns import format_suffix_patterns
from . import views

urlpatterns = [
    path('',views.home,name='home'),
    #path('news/',views.news_list),
    #path('news/<int:pk>/',views.news_details)
    Path('news/', views.NewsList.as_view())
]+ static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)

Url файла проекта-:

from django.contrib import admin
from django.urls import path,include
#from rest_framework.urlpatterns import format_suffix_patterns

urlpatterns = [
path('admin/', admin.site.urls),
path('',include('articles.urls')),
#path('news/',views.ANI_newsList.as_view()),
]

Если я могу запустить команды как runserver, то появляется ошибка:

folder\myblogsite22\myblogsite\myblogsite\urls.py", line 22, in <module>
        path('',include('articles.urls')),
      File "C:\Users\Gaurav\AppData\Local\Programs\Python\Python39\lib\site-packages\django\urls\conf.py", line 34, in include
        urlconf_module = import_module(urlconf_module)
      File "C:\Users\Gaurav\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
      File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 790, in exec_module
      File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
      File "C:\Users\Gaurav\Desktop\sandeep\san\New folder\myblogsite22\myblogsite\articles\urls.py", line 12, in <module>
        Path('news/', views.NewsList.as_view())
      File "C:\Users\Gaurav\AppData\Local\Programs\Python\Python39\lib\pathlib.py", line 1071, in __new__
        self = cls._from_parts(args, init=False)
      File "C:\Users\Gaurav\AppData\Local\Programs\Python\Python39\lib\pathlib.py", line 696, in _from_parts
        drv, root, parts = self._parse_args(args)
      File "C:\Users\Gaurav\AppData\Local\Programs\Python\Python39\lib\pathlib.py", line 680, in _parse_args
        a = os.fspath(a)
    TypeError: expected str, bytes or os.PathLike object, not function

Пожалуйста, помогите найти решения Примечание: если я пробую апи на основе функций, то они работают нормально, но не работают апи на основе классов

Измените ваш urls.py так, чтобы вы использовали django.urls.path во всех ваших шаблонах, а не pathlib.Path

from pathlib import Path  # Delete this line

...

urlpatterns = [
    ...
    path('news/', views.NewsList.as_view()),  # Use path with a lowercase p
]
Вернуться на верх