【问题标题】:HTTP 400 Bad Request in Django REST API while posting data发布数据时 Django REST API 中的 HTTP 400 错误请求
【发布时间】:2021-11-16 23:10:30
【问题描述】:

我尝试使用 django restframework 通过 post 方法将一些数据发布到我的数据库中,但我遇到了这个问题 HTTP 400 Bad Request : VM972 jquery-3.5.1.min.js:2 POST http://127.0.0.1:8000/newmember/ 400 (Bad请求)

{
    "id":1,
    "first_name": "paul",
    "last_name": "scholes",
    "discipline": "football",
    "start_date": "01-01-2000",
    "end_date": "01-01-2012",
    "email": "paulscholes@gmail.com"
}

视图文件

@api_view(['POST'])
def insert_member(request):
    if request.method == "POST":
        # data = JSONParser().parse(request.data)
        member_serializer = MemberSerializer(data=request.data)
        if member_serializer.is_valid():
            member_serializer.save()
            return Response(member_serializer.data,status=201)
        return Response(member_serializer.data,status=400)

网址文件

urlpatterns = [
    path('admin/', admin.site.urls),
    path('equipments/', include('equipments.urls')),
    path('gym/',views.equipmentList.as_view()),
    path('newmember/', insert_member,name='insert_member'),
]

序列化程序文件

from rest_framework import serializers
from .models import Member```
    
class MemberSerializer(serializers.ModelSerializer):
    class Meta:
        model = Member
        fields = '__all__'

【问题讨论】:

  • 在 post 方法中,将序列化程序定义为 serializer = MemberSerializer(data=request.data) 而不是 member_serializer=.... 然后 if serializer.is_valid 而不是 if member_serializers.is_valid 。该方法需要序列化器的值。

标签: django-rest-framework postman django-urls rest bad-request


【解决方案1】:

我已通过在模型文件中设置 start_date 的类型来修复它:

start_date = models.DateTimeField(auto_now_add = True)

而不是

start_date = models.DateField(null=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2015-05-10
    • 2016-11-06
    相关资源
    最近更新 更多