AttributeError: объект 'ModelName' не имеет атрибута 'get', если response.get("X-Frame-Options") не None:

Я пытаюсь получить список сценариев

Я не уверен, почему django выдает эту ошибку, может ли кто-нибудь определить, если что-то не так.

Модель

class Script(models.Model):
    name = models.CharField(max_length=100)
    script = models.TextField()

    def __str__(self):
        return self.name

Serializer

class ScriptSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    name = serializers.CharField(read_only=True)
    script = serializers.CharField(read_only=True)

просмотр;

@api_view(['GET'])
def scripts(request):
    scripts = Script.objects.all()
    serializer = ScriptSerializer(scripts, many=True)
    return Response(serializer.data)

но когда я вызываю это представление, я получаю эту ошибку

Internal Server Error: /api/v1/seo/scripts
Traceback (most recent call last):
  File "E:\folder\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "E:\folder\venv\lib\site-packages\django\utils\deprecation.py", line 136, in __call__
    response = self.process_response(request, response)
  File "E:\folder\venv\lib\site-packages\django\middleware\clickjacking.py", line 27, in process_response
    if response.get("X-Frame-Options") is not None:
AttributeError: 'Script' object has no attribute 'get'

Я также видел ответы, связанные с этим вопросом в Stackoverflow, но не смог воспроизвести решение. И также этот подход не нов для меня, я использовал этот тип функций по всему проекту. Но теперь я удивлен, почему это происходит.

Редактирование: Импорт

from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import ScriptSerializer
from .models import Script

урлы

from django.urls import path
from . import views as views

app_name = "seo"

urlpatterns = [
    path('scripts', views.Script, name='scripts'),
]

Я считаю, что проблема здесь в столкновении имен. Посмотрите внимательнее на это:

@api_view(['GET'])
def scripts(request):
    scripts = Script.objects.all()
    serializer = ScriptSerializer(scripts, many=True)

Функция названа scripts, а затем это имя переназначено scripts = Script.objects.all(). Это может привести к действительно неожиданному поведению

Попробуйте переименовать вашу локальную переменную. Например:

@api_view(['GET'])
def scripts(request):
    script_items = Script.objects.all()

UPD после urls.py добавлено:

Он должен указывать на представление функции, т.е. на модель:

path('scripts', views.scripts, name='scripts'),
Вернуться на верх