Models.py
from django.db import models
#在這里創建你的模型。
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.view 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.view 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())/span>
]
我正在制作Review api.
。我想用建筑名稱作為URL路徑,以帶來特定建筑的評論
。例如,有a、b、c、d、e評論 a、b、c的評論是針對aa樓的 d,e的評論是針對aaabuilding的
api/buildingdata/aaabuilding (只顯示aaabuilding的評論) api/buildingdata/xxxbuilding (只顯示xxxbuilding的評論)
我已經搜索了一些動態網址的帖子,但它們不是我想要的。
有沒有辦法從資料庫中把建筑名稱帶入網址?
uj5u.com熱心網友回復:
在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)
希望這能解決這個問題
。uj5u.com熱心網友回復:
我建議你看一下django檔案,那里對這個問題有很好的解釋,這里有一個有用的鏈接
。在你的urls.py中,你應該把:
from django.contrib import admin
from django.urls import path
from crawling_data.view 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.view 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)。
# 添加了另一個引數,從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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323508.html
標籤:
