Я столкнулся с проблемой при выполнении 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]
 
Вернуться на верх