Я столкнулся с проблемой при выполнении JSONRenderer.render(serialized_student_data.data) в Django
Я новичок в Django, Всякий раз, когда я выполняю строку json_data = JSONRenderer.render(serialized_student_data.data) она выдает мне ошибку TypeError: render() missing 1 required positional argument: 'data'
#Здесь код в models.py
class StudentModel(models.Model):
name = models.CharField(max_length=100, default='user')
roll_no = models.IntegerField(default=1)
city = models.CharField(max_length=100, default='Ahmedabad')
# Вот код в serializers.py
class StudentSerializer(serializers.Serializer):
name = serializers.CharField(max_length=100)
roll_no = serializers.IntegerField()
city = serializers.CharField(max_length=100)
#Здесь код в файле views.py
def student_view(request):
student_object = StudentModel.objects.get(id=3)
serialized_student_data = StudentSerializer(student_object)
json_data = JSONRenderer.render(serialized_student_data.data)
return HttpResponse(json_data, content_type='application/json')
Вы должны создать объект JSONRender вместо того, чтобы использовать класс, и код будет таким,
json_data = JSONRenderer().render(data=serialized_student_data.data)
create a separate render file in the same app you are working on.
code of a renderer will work for all the views you are using add the
renderer class where you want to use
from rest_framework import renderers
import json
class StudentRenderer(renderers.JSONRenderer):
charset='utf-8'
def render(self, data, accepted_media_type=None, renderer_context=None):
response = ''
if 'ErrorDetail' in str(data):
response = json.dumps({'errors':data})
else:
response = json.dumps(data)
return response
then add the render class into the student view class
first import the respective library.
from user.renderers import StudentRenderer
use this in the student view anywhere
renderer_classes = [StudentRenderer]