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

如何在Django中实现以数据库建筑名称为路径参数的动态URL评论API

实现步骤

1. 调整urls.py配置动态路径参数

在路径中用<参数类型:参数名>的格式声明动态参数,会自动将路径中对应位置的内容作为参数传递给视图函数:

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视图接收参数并过滤数据

首先注意类视图的方法第一个参数必须是self,原来的代码漏写了会报错,其次要接收路由传递的building_name参数,用这个参数过滤评论查询集:

class ReviewListAPI(APIView):
    # 增加self参数和building_name路径参数
    def get(self, request, building_name):
        # 按路径传入的建筑名称过滤评论数据
        queryset = reviewData.objects.filter(building_name=building_name)
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)

如果需要对不存在的建筑返回404提示,可以补充校验逻辑:

from rest_framework import status
from rest_framework.response import Response

class ReviewListAPI(APIView):
    def get(self, request, building_name):
        # 先校验建筑是否存在
        if not buildingData.objects.filter(building_name=building_name).exists():
            return Response({"error": "该建筑不存在"}, status=status.HTTP_404_NOT_FOUND)
        queryset = reviewData.objects.filter(building_name=building_name)
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)

3. 修复原有代码的隐藏问题

你现有代码中BuildingInfoAPI的get方法也漏写了self参数,需要同步修改,否则接口请求会报错:

class BuildingInfoAPI(APIView):
    # 补全self参数
    def get(self, request):
        queryset = buildingData.objects.all()
        # 注意:这里你之前用了ReviewSerializer序列化建筑数据是错误的,需要单独写对应buildingData模型的序列化器
        # 正确示例假设你写了BuildingSerializer:
        # serializer = BuildingSerializer(queryset, many=True)
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)

内容的提问来源于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 10:54:04