Пытаюсь подключить 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