Отказ от ответственности: - Я новичок.Я пытаюсь создать REST API Django, который может поддерживать все операции CRUD.Я могу получить данные из вызова API (127.0.0.1/api/get), а также могу добавлять, изменять и удалять записи вручную из пользовательского интерфейса (после запроса GET).Я создал одну форму в каталоге шаблонов, которая принимает входные данные от пользователя и при отправке отправляется на тот же URL-адрес (127.0.0.1/api/get), но данные не сохраняются, а вместо этого возвращает следующее: - HTTP 400 Bad RequestРазрешить: GET, POST, HEAD, OPTIONS Тип содержимого: application / json Зависит: Accept
{"sourceName»: [«Это поле обязательно для заполнения».], "sourceURL": ["Это поле обязательно для заполнения."]}
У меня есть только одно приложение (источник).views.py: -
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from source import models
from source import serializers
from django.shortcuts import render
from rest_framework import viewsets
from rest_framework.views import APIView
def home(request):
return render(request, 'Forms/input.html')
class SourceViewset(viewsets.ModelViewSet):
print("Inside ConnectionInfoViewset..")
queryset = models.Source.objects.all()
serializer_class = serializers.SourceSerializer
print("Inside ConnectionInfoViewset..")
def post(self,request):
print("Inside POST")
return JsonResponse("From POST", safe=False)
serializer = serializers.SourceSerializer(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)
source_urls.py
from django.urls import path, include
from source import views
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register('', views.SourceViewset)
urlpatterns = [
path('', views.home),
path('get/', include(router.urls)),
]
serializers.py:-
from rest_framework import serializers
from source import models
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
class SourceSerializer(serializers.ModelSerializer):
class Meta:
model = models.Source
# fields = '__all__'
fields = ('sourceName','sourceURL')
models.py:-
from django.db import models
# Create your models here.
class Source(models.Model):
sourceName = models.CharField(max_length = 40)
sourceURL = models.CharField(max_length = 40)
def __str__(self):
return self.__all__
input.html:-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="/api/get/" method = "POST">
{% csrf_token %}
<input type="text" placeholder="SourceName" name = 'user_name'> <br>
<input type="text" placeholder="SourceURL" name = 'password'><br>
<button type="submit">Submit</button>
</form>
</body>
</html>