Пытаюсь подключить Django API к локальной базе данных SQL Server, но при тестировании в Insomnia таблица возвращается пустой.

У меня есть база данных SQL Server, состоящая в основном из 3 таблиц, и я хочу создать грубый веб-интерфейс для управления ею, и я начал с создания Django API для бэкенда Я следовал некоторым онлайн-руководствам, чтобы сделать это, поскольку я никогда не делал ничего подобного.

После успешного запуска сервера Django без ошибок я отправил GET запрос с Insomnia для получения определенной таблицы с именем "memoire" и получил пустую строку в результате, когда эта таблица заполнена некоторыми данными в моей базе данных, и я не знаю, где может быть проблема. Я приложу настройки базы данных в settings.py, файл model.py и views.py, и если нужны какие-либо дополнительные детали, я добавлю их.

Вот настройки базы данных:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'MyDatabase',
        'USER': 'django',
        'PASSWORD': 'rayen1',
        'HOST': 'localhost',
        # 'PORT':'',

        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'Trusted Connection': 'yes',
        },
    }
}

Это models.py

from django.db import models


class NdfItem(models.Model):
    OrgShortName = models.CharField(max_length=255, null=True)
    prod_long_name = models.CharField(max_length=255, null=True)
    prod_short_name = models.CharField(max_length=255, null=True)
    pack_description = models.CharField(max_length=255, null=True)
    Category = models.CharField(max_length=255, null=True)
    Sub_Category = models.CharField(max_length=255, null=True)
    ret_price = models.FloatField(null=True)
    ImageSrc = models.CharField(max_length=255, null=True)
    line_code = models.IntegerField(null=True)
    market_abbr = models.CharField(max_length=255, null=True)
    org_code = models.CharField(max_length=255, null=True)
    pin_elh_status = models.CharField(max_length=255, null=True)
    prod_code = models.CharField(max_length=255, null=True)
    prod_launch_date = models.CharField(max_length=255, null=True)
    prod_out_of_trade_date = models.CharField(max_length=255, null=True)
    weight_unit_pack = models.CharField(max_length=255, null=True)
    pack_weight_measure = models.CharField(max_length=255, null=True)
    pack_size = models.CharField(max_length=255, null=True)
    pack_code = models.CharField(max_length=255, null=True)
    fixed_cont_code = models.CharField(max_length=255, null=True)
    relative_strength_measure = models.CharField(max_length=255, null=True)
    pfc = models.CharField(max_length=255, null=True)
    pack_out_of_trade_date = models.CharField(max_length=255, null=True)
    pin_elh_statuss = models.CharField(max_length=255, null=True)
    market_sector_abbr = models.CharField(max_length=255, null=True)
    nfc = models.CharField(max_length=255, null=True)
    tnfd_long_name = models.CharField(max_length=255, null=True)
    tnfd_short_name = models.CharField(max_length=255, null=True)
    tnfd = models.CharField(max_length=255, null=True)
    hosp_price = models.CharField(max_length=255, null=True)
    atc = models.CharField(max_length=255, null=True)
    


class MemoireItem(models.Model):
    code_grossiste = models.CharField(max_length=255, null=True)
    Code = models.CharField(max_length=255, null=True)
    nom_ventes = models.CharField(max_length=255, null=True)
    nom_de_produit = models.CharField(max_length=255, null=True)
    pfc = models.CharField(max_length=255, null=True)
    


class VentesItem(models.Model):
    code_grossiste = models.CharField(max_length=255, null=True)
    code_produit = models.CharField(max_length=255, null=True)
    lettre = models.CharField(max_length=255, null=True)
    code_postal = models.CharField(max_length=255, null=True)
    unite_vendu = models.CharField(max_length=255, null=True)
    nom_de_produit = models.CharField(max_length=255, null=True)
    prix = models.CharField(max_length=255, null=True)

    

Это views.py

from django.shortcuts import render
from django.http import JsonResponse
from .models import MemoireItem
from django.views.decorators.csrf import csrf_exempt
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import MemoireItem
from .serializers import MemoireItemSerializer

@csrf_exempt
class MemoireList(APIView):
    def get(self, request):
        items = MemoireItem.objects.all()
        serializer = MemoireItemSerializer(items, many=True)
        return Response(serializer.data)
    
    def post(self, request):
        serializer = MemoireItemSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=201)
        return Response(serializer.errors, status=400)


@csrf_exempt
def memoire_detail(request, pk):
    try:
        item = MemoireItem.objects.get(pk=pk)
    except MemoireItem.DoesNotExist:
        return JsonResponse({'error': 'Item does not exist'}, status=404)

    if request.method == 'GET':
        data = {'code_grossiste': item.code_grossiste,
                'code_produit': item.code_produit,
                'nom_ventes': item.nom_ventes,
                'nom_de_produit': item.nom_de_produit,
                'PFC': item.PFC}
        return JsonResponse(data)
    elif request.method == 'PUT':
        # Handle PUT request to update the item
        pass
    elif request.method == 'DELETE':
        # Handle DELETE request to delete the item
        pass

и эти столбцы в таблице memoire в SQL Server

Вернуться на верх