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
相关产品推荐
相关产品推荐

