Django中的JSONField即使在POST请求后仍保持为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中的JSONField即使在POST请求后仍保持为空相关的知识,希望对你有一定的参考价值。
我在Django中有一个带有JSONField的模型。如果我使用Django Rest UI通过浏览器发布POST,数据将毫无问题地输入到模型中。但是,当我在应用程序中使用Python的request.post时,除JSONField数据外的所有内容都存储在模型中。
这是我的模特
from django.db import models
from django.contrib.postgres.fields import JSONField
class Scans(models.Model):
Name = models.CharField(max_length=20)
Server = models.CharField(max_length=20)
Results = JSONField(default=dict)
Report_Url = models.URLField(max_length=30)`
这是我的序列化器
from rest_framework import serializers
from .models import Scans
class ScansSerializer(serializers.ModelSerializer):
class Meta:
model = Servers
fields = '__all__'
这是我的观点
class ScansData(APIView):
def get(self, request):
scans = Scans.objects.all()
serializer = ScansSerializer(scans, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request):
serializer = ScansSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request):
scans = Scans.objects.all()
scans.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
这是我的要求
data =
"Name": "dodo",
"Server": "ubuntu",
"Report_Url": "https://127.0.0.1:8000/about/"
jsonval =
"Results":
"Severity_High": 8,
"Severity_Medium": 7,
"Severity_Low": 5
requests.post('http://127.0.0.1:8000/scans/', data=data, json=jsonval)
URL
urlpatterns = [
path('scans/', ScansData.as_view()),
]
使用requests.post后看到的内容>
"id": 10,
"Name": "dodo",
"Server": "ubuntu",
"Results": ,
"Report_Url": "https://127.0.0.1:8000/about/"
我在Django中有一个带有JSONField的模型。如果我使用Django Rest UI通过浏览器发布POST,数据将毫无问题地输入到模型中。但是,当我在...
答案
None另一答案
None另一答案
None以上是关于Django中的JSONField即使在POST请求后仍保持为空的主要内容,如果未能解决你的问题,请参考以下文章
ArrayField 中的 Django JSONField
使用 JSONField 中的列表在 Django 中查找对象