#python #django #django-rest-framework #django-views
#python #django #django-rest-framework #django-представления
Вопрос:
Я работаю над API, и мне нужно создать функцию, которая не допускала бы тот же формат post менее чем за 10 минут, но я просто пытаюсь напечатать что-то в терминале, если пользователь использует метод запроса «GET», но он не работает.
urls.py:
from django.urls import include, path
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register(r'products',views.ProductsViewSet)
router.register(r'product-images',views.ProductImagesViewSet)
#router.register(r'^products/', views.testIt, basename="TestIt")
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls',
namespace='rest_framework')),
path('products/', views.testIt, name = "testIt"),
]
views.py:
from rest_framework import viewsets
from .serializers import ProductsSerializers
from .serializers import ProductImagesSerializers
from .models import Products
from .models import ProductImages
from rest_framework import status
from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.decorators import api_view
from django.http import JsonResponse
class ProductsViewSet(viewsets.ModelViewSet, APIView):
queryset = Products.objects.all().order_by('id')
serializer_class = ProductsSerializers
def testIt(self, request, pk=None):
if request.method == 'GET':
print('Testando')
return Response('Teste!', status = status.HTTP_400_NOT_FOUND)
class ProductImagesViewSet(viewsets.ModelViewSet):
queryset = ProductImages.objects.all().order_by('id')
serializer_class = ProductImagesSerializers
Я все еще вижу данные, но они не возвращают никаких сообщений и ничего не печатают, когда я использую метод get.
Заранее спасибо!!
Комментарии:
1. Как запустить приложение wsgi? Может быть, это какая-то буферизация. Попробуйте добавить
flush=True
к вам2. Самая большая проблема в том, что это сработало, когда я создавал веб-сайт с помощью Django. Проблема возникла с тех пор, как я начал работать с rest framework, я не в первый раз пытаюсь и даже впервые сталкиваюсь с этой ошибкой :/
Ответ №1:
Первый параметр, который вы передаете функции self
, — удалить его. В противном случае Request
объект будет находиться в той переменной, а request
не в той, с которой вы работаете в if
инструкции.
Кроме того, украсьте функцию api_view
: https://www.django-rest-framework.org/api-guide/views/#api_view
Комментарии:
1. Он все равно не работает, даже если удалить параметр [self] .
2. Отредактировал мой ответ, извините, я забыл