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

Django如何从数据库读取建筑名称作为URL路径查询对应评论

实现步骤

1. 修改urls.py配置动态路径

把你注释的路径替换为如下代码,通过<str:building_name>声明字符串类型的动态路径参数:

from django.contrib import admin
from django.urls import path
from crawling_data.views import ReviewListAPI
from crawling_data.views import BuildingInfoAPI

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/buildingdata/', BuildingInfoAPI.as_view()),
    # 新增带建筑名参数的动态路径
    path('api/buildingdata/<str:building_name>/', ReviewListAPI.as_view())
]

2. 修改ReviewListAPI接收参数并过滤查询

首先修正原get方法的参数错误(类视图的方法第一个参数必须是self),新增路径参数building_name作为入参,查询时按该参数过滤评论数据:

from django.shortcuts import get_object_or_404
from rest_framework.response import Response
from .models import reviewData, buildingData
from rest_framework.views import APIView
from .serializers import ReviewSerializer

# 其余原有代码保持不变
class ReviewListAPI(APIView):
    def get(self, request, building_name):
        # 可选:先校验建筑是否存在,不存在直接返回404,避免无效查询
        get_object_or_404(buildingData, building_name=building_name)
        # 按路径传入的建筑名过滤评论
        queryset = reviewData.objects.filter(building_name=building_name)
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)

效果验证

修改完成后启动服务,访问api/buildingdata/aaabuilding就会仅返回aaabuilding的所有评论,访问api/buildingdata/xxxbuilding就会返回xxxbuilding的对应评论,符合你要求的返回格式。

注意:请确保你的ReviewSerializer已经正确配置了reviewData模型的三个字段building_name、review_content、star_num,序列化输出才能和你给出的示例匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:42:02