You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Rest无法获取GET响应,数据库查询测试遇阻求助

Django Rest 数据库数据获取问题排查与解决

Hey there! 看你正在学习Django Rest Framework,尝试从数据库取数据时碰到了问题,我先把你给出的代码整理好,再给你梳理一些常见的排查方向和实用解决方案~

你的 models.py 代码

from django.db import models
# Create your models here.
class Stock(models.Model):
    ticker = models.CharField(max_length=10)
    open = models.FloatField()
    close = models.FloatField()
    volume = models.IntegerField()
    def __str__(self):
        return self.ticker

你的 serializers.py 代码(片段)

from rest_framework import serializers
from .models import Stock
# 看起来你这里的代码没写完,先从补全序列化器开始吧!

一步步解决问题

1. 补全序列化器定义

序列化器是DRF里把模型数据转换成前端能识别的JSON格式的核心,你需要给Stock模型写一个对应的序列化类:

class StockSerializer(serializers.ModelSerializer):
    class Meta:
        model = Stock
        fields = '__all__'  # 如果你只想返回特定字段,可以写成['ticker', 'open', 'close', 'volume']

2. 编写视图来处理数据查询

接下来需要在views.py里写视图,负责从数据库查询数据,并用序列化器处理后返回。这里给你两种常用的写法:

基于类的视图(推荐,DRF自带的通用视图很省心)

from rest_framework import generics
from .models import Stock
from .serializers import StockSerializer

class StockListView(generics.ListAPIView):
    queryset = Stock.objects.all()  # 查询所有Stock数据
    serializer_class = StockSerializer

基于函数的视图(更灵活)

from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import Stock
from .serializers import StockSerializer

@api_view(['GET'])
def get_stocks(request):
    # 从数据库取出所有Stock记录
    stocks = Stock.objects.all()
    # 因为是多条数据,要加上many=True
    serializer = StockSerializer(stocks, many=True)
    # 返回序列化后的JSON数据
    return Response(serializer.data)

3. 配置URL路由

别忘把视图和URL绑定,在你的app的urls.py里添加路由规则:

from django.urls import path
from .views import StockListView, get_stocks  # 根据你选的视图类型导入

urlpatterns = [
    # 类视图的写法
    path('stocks/', StockListView.as_view(), name='stock-list'),
    # 函数视图的写法(二选一即可)
    # path('stocks/', get_stocks, name='stock-list'),
]

4. 检查数据库迁移与测试数据

确保你的模型已经同步到数据库:

python manage.py makemigrations
python manage.py migrate

另外,数据库里得有数据才能返回哦!可以通过Django admin或者shell添加测试数据:

python manage.py shell

在shell里执行:

from your_app_name.models import Stock
# 替换成你的app名称,比如如果app叫stocks,就写from stocks.models import Stock
Stock.objects.create(ticker='AAPL', open=150.25, close=153.75, volume=1200000)

5. 测试API

启动开发服务器:

python manage.py runserver

然后在浏览器或者Postman里访问http://localhost:8000/stocks/,就能看到返回的Stock数据啦!

如果还有具体的报错信息(比如500错误、序列化错误之类的),可以把错误内容贴出来,我再帮你针对性排查~

内容的提问来源于stack exchange,提问作者user7128116

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:40:27