户型/的查询"/>
爱租房项目、地区/户型/的查询
序列化器 api/serializers.py中
from rest_framework import serializersfrom common.models import District, HouseTypeclass DistrictSimpleSerializer(serializers.ModelSerializer):'''省级行政区序列化'''class Meta:model = Districtfields = ('distid','name') #要序列化的字段class DistrictDetaliSerializer(serializers.ModelSerializer):cities = serializers.SerializerMethodField()@staticmethod
def get_cities(district):queryset = District.objects.filter(parent__distid=district.distid)return DistrictSimpleSerializer(queryset,many=True).dataclass Meta:model = Districtexclude = ('parent','ishot')class HouseTypeSerializer(serializers.ModelSerializer):'''户型'''class Meta:model = HouseTypefields = '__all__'
api接口的函数 api/views.py中
from django.http import HttpRequest, HttpResponse
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from rest_framework.decorators import api_view
from rest_framework.generics import ListAPIView
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSetfrom api.serializers import DistrictSimpleSerializer, DistrictDetaliSerializer, \HouseTypeSerializer
from common.models import District, HouseType@api_view(('GET',)) #接受get请求,用rest_framework
@cache_page(timeout=365*86400,cache='default') #配置缓存
def get_provinces(request:HttpRequest) -> HttpResponse: #省级行政区queryset = District.objects.filter(parent__isnull=True)serializer = DistrictSimpleSerializer(queryset,many=True)return Response({'provinces':serializer.data})@api_view(('GET',)) #拿省底下的市
@cache_page(timeout=600,cache='default')
def get_cities(request,distid):district = District.objects.get(distid=distid)serializer = DistrictDetaliSerializer(district)return Response(serializer.data)@method_decorator(decorator=cache_page(timeout=86400,cache='default'),name='get')
class HotCitiesView(ListAPIView): #类装饰器(用来装饰方法,name='get',用来装饰get方法)queryset = District.objects.filter(ishot=True)serializer_class = DistrictSimpleSerializerclass HouseTypeViewSet(ModelViewSet): #ModelViewSet要注册路由queryset = HouseType.objects.all()serializer_class = HouseTypeSerializer
api/urls.py中
from django.urls import path
from rest_framework.routers import DefaultRouter
from api.views import get_provinces, get_cities, HotCitiesView, HouseTypeViewSeturlpatterns = [path('districts/',get_provinces),path('districts/<int:distid>',get_cities),path('hotcities/',HotCitiesView.as_view()), #把类变方法]router = DefaultRouter() #户型的接口
router.register('housetypes',HouseTypeViewSet)
urlpatterns += router.urls
添加调试工具栏debug_toolbar
#settings.py中
INSTALLED_APPS = [ #加入debug_toolbar应用...'debug_toolbar',]MIDDLEWARE = [ #加入debug_toolbar中间键'debug_toolbar.middleware.DebugToolbarMiddleware',...]# 调试工具栏 #在前端加入工具栏
DEBUG_TOOLBAR_CONFIG = {# 引入jquery库'JQUERY_URL': '.4.1/jquery.min.js',# 工具栏是否折叠'SHOW_COLLAPSED': True,# 是否显示工具栏'SHOW_TOOLBAR_CALLBACK': lambda x: True,
}#项目主应用下urls.py中
from django.conf import settings
if settings.DEBUG:import debug_toolbarurlpatterns.insert(0, path('__debug__/', include(debug_toolbar.urls)))
更多推荐
爱租房项目、地区/户型/的查询
发布评论