python - Django Rest Framework 没有从我的数据库中检索数据
问题描述
我正在创建一个 API 端点来从 Mongo 数据库中检索数据,以便在我的前端使用它。
在我的项目中,我使用了两个数据库:一个 sqlite 数据库和一个 Mongo 数据库。
在 Mongo 数据库中,有一个名为集合的集合tst
,其中包含一些数据。我创建了端点,但是在浏览器上打开 api 后,我没有看到从集合中检索到任何 json 数据,就好像它没有在正确的位置查找一样。
有人可以帮我找出我做错了什么吗?
这是我的模型:
class tst(models.Model):
id = models.CharField(max_length=100)
ticker = models.FloatField()
def save(self, *args, using=None, **kwargs):
super(tst, self).save(*args, using='dbtwo', **kwargs)
这是我的看法:
class tstList(generics.ListCreateAPIView):
queryset = tst.objects.using('dbtwo').all()
serializer_class = tstSerializer
这是序列化程序:
class tstSerializer(serializers.ModelSerializer):
class Meta:
model = tst
fields = ('id', 'ticker', )
和网址:
path('tst/', views.tstList.as_view()),
解决方案
所以我像你一样设置了 2 个数据库,稍微更改了代码,向数据库添加了 2 个对象,并在我的 API 调用中tst
检索了这 2 个对象的 JSON 数据。tst
models.py
我通过添加primary_key=True
到该id
字段稍微改变了。
# models.py
class tst(models.Model):
id = models.CharField(primary_key=True, max_length=100)
ticker = models.FloatField()
def save(self, *args, using=None, **kwargs):
super(tst, self).save(*args, using='dbtwo', **kwargs)
我改变了,views.py
所以它使用ModelViewSet
这样的:
# views.py
from rest_framework import viewsets
class tstList(viewsets.ModelViewSet):
queryset = tst.objects.using('dbtwo').all()
serializer_class = tstSerializer
我没有对序列化程序进行任何更改,所以我的看起来像这样:
# serializers.py
class tstSerializer(serializers.ModelSerializer):
class Meta:
model = tst
fields = ('id', 'ticker',)
最后在urls.py
我使用 aDefaultRouter()
并将tstList
视图注册为这样的端点:
# urls.py
from rest_framework import routers
# imported tstList view here
router = routers.DefaultRouter()
router.register(r'test', views.tstList, base_name='test')
然后我在终端中运行了以下命令:
manage.py makemigrations
manage.py migrate --database dbtwo
manage.py runserver
然后,我为它们的字段创建了两个tst
具有随机浮点值的对象。ticker
GET 请求和结果
当我现在向我发出 GET 请求时,http://127.0.0.1:8000/test/
我得到以下结果:
[
{
"id": "1",
"ticker": 1.2
},
{
"id": "2",
"ticker": 1.7
}
]
推荐阅读
- python - 这两个代码有什么区别吗?
- c# - 使用 Switch case when 语句时生成错误?
- ios - AVSampleBufferDisplayLayer 挂起/冻结
- java - 使用 java SimpleJdbcCall 调用无参数类型“is table of varchar2”的过程 oracle
- python - 用于自动下载压缩文件夹的 Bash 命令 - Google Colab
- django - 如何隐藏自动生成的模式中的字段,或明确定义模式?
- javascript - 如何使用 javascript 获取原始单位的 CSS 值?
- python - Datawig:使用 SimpleImputer 导致的 KeyError
- c# - 我应该如何从 Span/ReadOnlySpan 创建 ImmutableArray?
- google-coral - 如何编写一个迭代一定次数的for循环:Coral