Django Как вывести данные в url из БД?
Models.py
from django.db import models
# Create your models here.
class reviewData(models.Model):
    building_name = models.CharField(max_length=50)
    review_content = models.TextField()
    star_num = models.FloatField()
class buildingData(models.Model):
    building_name = models.CharField(max_length=50)
    building_loc = models.CharField(max_length=50)
    building_call = models.CharField(max_length=20)
views.py
# Create your views here.
from django.shortcuts import render
from rest_framework.response import Response
from .models import reviewData
from .models import buildingData
from rest_framework.views import APIView
from .serializers import ReviewSerializer
class BuildingInfoAPI(APIView):
    def get(request):
        queryset = buildingData.objects.all()
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)
class ReviewListAPI(APIView):
    def get(request):
        queryset = reviewData.objects.all()
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)
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/(I want to put building name here)', ReviewListAPI.as_view())
]
Я делаю review api.
Я хочу использовать название здания в качестве пути url, чтобы вывести отзывы для определенных зданий
Например, есть a, b, c, d, e отзывы a, b, c отзывы относятся к aaabuilding d, e отзывы относятся к aaabuilding
api/buildingdata/aaabuilding (показывает только обзор aaabuilding) api/buildingdata/xxxbuilding (показывает только обзор xxxbuilding)
>Я искал некоторые посты о динамических url, но они не то, что мне нужно.
Есть ли способ внести название здания в url из базы данных?
В urls.py
path('api/buildingdata/<str:building>/', BuildingInfoAPI.as_view()),
И в файле views.py
class BuildingInfoAPI(APIView):
    def get(request, building):
        queryset = buildingData.objects.filter(building_name__contains=building)
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)
Надеюсь, это решит проблему
Я предлагаю вам взглянуть на документацию django, там это довольно хорошо объяснено, вот полезная ссылка
В вашем 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()),
    # added <str:building> to url
    path('api/buildingdata/<str:building>', ReviewListAPI.as_view())
]
И в вашем views.py:
# Create your views here.
from django.shortcuts import render
from rest_framework.response import Response
from .models import reviewData
from .models import buildingData
from rest_framework.views import APIView
from .serializers import ReviewSerializer
class BuildingInfoAPI(APIView):
    def get(request):
        queryset = buildingData.objects.all()
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)
class ReviewListAPI(APIView):
    # added another argument, retrieved from url
    def get(request, building):
        # changed .all() to .filter()
        queryset = reviewData.objects.filter(building_name = building)
        serializer = ReviewSerializer(queryset, many=True)
        return Response(serializer.data)