久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

python drf各類組件的用法和作用

瀏覽:94日期:2022-06-30 09:49:38
DRF組件的用法和作用認證

自定義認證的類 ''' from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from authapp.models import UserToken class MyOrderAuthentication(BaseAuthentication): 在這里實現認證的邏輯 def authenticate(self, request): token = request._request.GET.get(’token’) # 獲取到token之后,需要在數據庫中查找token obj = UserToken.objects.filter(token=token).first() if not obj: # 沒有通過認證 raise AuthenticationFailed(’認證失敗’) # 返回元組( user, auth ) return (obj.user, obj) ''' 使用局部配置(在視圖函數中) ''' class OrderView(APIView): # 通過authentication_classes設置認證類 authentication_classes = [MyOrderAuthentication,] # 通過authentication_classes設置為空列表,就不再進行認證了 # authentication_classes = [] ''' 全局配置 ''' REST_FRAMEWORK = { ’DEFAULT_AUTHENTICATION_CLASSES’:[’unitls.authentication.MyOrderAuthentication’], } ''' 設置匿名用戶 ''' REST_FRAMEWORK = { ’UNAUTHENTICATED_USER’: lambda :'匿名用戶', ’UNAUTHENTICATED_TOKEN’: lambda :’123456’, } ''' ## 最最重要的,理清認證的源代碼權限

自定義權限類 ''' from rest_framework.permissions import BasePermission class MyOrderPermission(BasePermission): #自定義權限認證的類,必須要實現has_permission方法 message = ’你不是超級用戶,沒有權限訪問’ def has_permission(self, request, view): #Return `True` if permission is granted, `False` otherwise. #返回True表示有權限訪問,返回False表示沒有權限訪問 if request.user.user_type != 3: return False return True ''' 局部使用 ''' class OrderView(APIView): # permission_classes設置權限類 permission_classes = [MyOrderPermission,] # 通過authentication_classes設置為空列表,就不再進行權限認證了 permission_classes = [] ''' 全局的設定 ''' REST_FRAMEWORK = { ’DEFAULT_PERMISSION_CLASSES’:[’unitls.permission.MyOrderPermission’], } ''' 最最重要的,理清權限認證的源代碼分頁

自定義分頁類PageNumberPagination # 自定制分頁類 class MyPageNumberPagination(PageNumberPagination): '''http://127.0.0.1:8000/api/userpage/?page=1&pagesize=10''' # page_size每一返回多少條 page_size = 5 # 設置分頁的參數名 page_query_param = ’page’ # 設置每頁返回數據量的參數名 page_size_query_param = ’pagesize’ # 設置每頁最大返回的條數 max_page_size = 6 使用 class UsersPageView(APIView): def get(self,request,*args,**kwargs): # 獲取表中所有用戶的row(記錄) obj = models.UserInfo.objects.all() #實例化分頁的類 #page_obj = PageNumberPagination() page_obj = MyPageNumberPagination() #獲取分頁數據 page_data = page_obj.paginate_queryset( queryset=obj,request=request,view=self) # 序列化 ser = UsersSerializer(instance=page_data,many=True)# return Response(ser.data) #get_paginated_response會返回上一頁下一頁和總條數 return page_obj.get_paginated_response(ser.data) 自定義分頁類LimitOffsetPagination from rest_framework.pagination import LimitOffsetPagination class MyLimitOffsetPagination(LimitOffsetPagination): '''http://127.0.0.1:8000/api/userpage/?limit=10&offset=0''' default_limit = 5 limit_query_param = ’limit’ offset_query_param = ’offset’ max_limit = 7 自定義分頁類CursorPagination(會對分頁參數進行加密) from rest_framework.pagination import CursorPagination class MyCursorPagination(CursorPagination): '''http://127.0.0.1:8000/api/userpage/?cursor=cD01''' cursor_query_param = ’cursor’ page_size = 4 #返回數據市的排序的方式 ordering = ’-id’ max_page_size = 8 設置全局的分頁 ''' REST_FRAMEWORK = { ’DEFAULT_PAGINATION_CLASS’:’unitl.pagination.MyCursorPagination’, ’PAGE_SIZE’:3 } '''視圖

以前 (Django的View) ''' class MyView(View) ..... ''' 現在(rest_framework的APIView) ''' class MyView(APIView) ..... ''' 其他視圖的使用 第一個:GenericAPIView 視圖的使用 (跟繼承自APIViewq其實一樣,只是我們在外面邏輯, GenericAPIView在內部c定制方法幫我們實現了) ''' from rest_framework.generics import GenericAPIView class BookinfoSeralizer(serializers.ModelSerializer):class Meta: model = models.BookInfo fields = '__all__' class BookView(GenericAPIView): # queryset: 設置獲取的數據 queryset = models.BookInfo.objects.all() # serializer_class: 設置序列化的類 serializer_class = BookinfoSeralizer # pagination_class : 設置分頁的類 pagination_class = MyPageNumberPagination def get(self,request,*args,**kwargs): obj = self.get_queryset() #=> obj = models.BookInfo.objects.all() # 獲取當前分頁的數據 page_data = self.paginate_queryset(obj) #=>page_obj = MyPageNumberPagination() #獲取分頁數據page_data = page_obj.paginate_queryset() # 獲取序列化之后的數據 ser = self.get_serializer(instance=page_data,many=True) #->ser = BookinfoSeralizer(instance=page_data,many=True) return Response(ser.data) ''' 第二個:GenericViewSet 視圖的如下使用,注意路由會發生變化 ''' class BookView(GenericViewSet): # queryset: 設置獲取的數據 queryset = models.BookInfo.objects.all() # serializer_class: 設置序列化的類 serializer_class = BookinfoSeralizer # pagination_class : 設置分頁的類 pagination_class = MyPageNumberPagination def list(self,request,*args,**kwargs):obj = self.get_queryset() #=> obj = models.BookInfo.objects.all()# 獲取當前分頁的數據page_data = self.paginate_queryset(obj) #=>page_obj = MyPageNumberPagination() #獲取分頁數據page_data = page_obj.paginate_queryset(# 獲取序列化之后的數據ser = self.get_serializer(instance=page_data,many=True) #->ser = BookinfoSeralizer(instance=page_data,many=True)return Response(ser.data) ''' 路由會發生變化,配置如下 ''' url(r'bookpage/$',views.BookView.as_view({’get’: ’list’}),name=’bookpage’) '''第三個:ListModelMixin,CreateModelMixin,RetrieveModelMixin, DestroyModelMixin,UpdateModelMixin 等視圖的使用''' from rest_framework.mixins import ListModelMixin,CreateModelMixin,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin from rest_framework.viewsets import GenericViewSet # ListModelMixin : 返回列表數據據( get請求) # CreateModelMixin : 新增一條數據 (Post請求) # RetrieveModelMixin, : 獲取詳情數據 (get請求) # DestroyModelMixin, : 刪除數據的時候 (delete) # UpdateModelMixin : 跟新數據的時候使用 (put) class BookView(ListModelMixin,RetrieveModelMixin,CreateModelMixin,DestroyModelMixin,UpdateModelMixin,GenericViewSet): # queryset: 設置獲取的數據 queryset = models.BookInfo.objects.all() # serializer_class: 設置序列化的類 serializer_class = BookinfoSeralizer # pagination_class : 設置分頁的類 pagination_class = MyPageNumberPagination ''' 第四個:ModelViewSet視圖的使用 ModelViewSet繼承自istModelMixin,CreateModelMixin, RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin視圖 如果要實現最基本的增刪改查功能,就直接繼承自ModelViewSet ''' from rest_framework.viewsets import ModelViewSet class BookView(ModelViewSet): # queryset: 設置獲取的數據 queryset = models.BookInfo.objects.all() # serializer_class: 設置序列化的類 serializer_class = BookinfoSeralizer # pagination_class : 設置分頁的類 pagination_class = MyPageNumberPagination ''' 視圖使用小總結 只想實現簡單的增刪改查ModelViewSet 只想增CreateModelMixin,GenericViewSet 只想增刪改CreateModelMixin,DestroyModelMixin,UpdateModelMixin,GenericViewSet 如果視圖中的業務邏輯復雜,以上都不能滿足的時候,直接使用APIView #自動路由配置 ''' from django.conf.urls import url,include from api import views from rest_framework import routers router = routers.DefaultRouter() router.register(r'bookpage',views.BookView,base_name=’bookpage’) urlpatterns = [ url(r’v1/’,include(router.urls)), ] ''' 自動路由會生成四個接口 ^api/ v1/ ^bookpage/$ [name=’bookpage-list’] ^api/ v1/ ^bookpage.(?P<format>[a-z0-9]+)/?$ [name=’bookpage-list’] ^api/ v1/ ^bookpage/(?P<pk>[^/.]+)/$ [name=’bookpage-detail’] ^api/ v1/ ^bookpage/(?P<pk>[^/.]+).(?P<format>[a-z0-9]+)/?$ [name=’bookpage-detail’]頻率限制節流

節流: 自定義節流類 ''' VISIT_RECORD = {} class VisitThrottle(object): def __init__(self): self.history = None def allow_request(self,request,view): #實現節流的邏輯 #基于ip做節流 # #獲取用戶訪問的IP地址 # ip_address = request._request.META.get(’REMOTE_ADDR’) ctime = time.time() # if ip_address not in VISIT_RECORD: # #第一次訪問的時候將訪問的時間存儲在字典中(ip地址為Key,訪問的時間為value值) # VISIT_RECORD[ip_address] = [ctime,] # # #第二次訪問的時候取出訪問的歷史記錄 # history = VISIT_RECORD[ip_address] # 基于用戶的節流 username = request.user.username if username not in VISIT_RECORD:VISIT_RECORD[username] = [ctime, ] history = VISIT_RECORD[username] self.history = history while history and history[-1] < ctime - 10:#如果訪問的時間記錄超過60秒,就把超過60秒的時間記錄移除history.pop() if len(history) < 6:history.insert(0,ctime)return True return False def wait(self): #一旦用戶訪問次數到達閥值,顯示用戶需要等待的時間 ctime = time.time() #09:54:30 09:54:28 return 10 - (ctime - self.history[-1]) ''' 局部使用 ''' class OrderView(APIView): # throttle_classes設置節流類 throttle_classes = [VisitThrottle,] '''全局設置 ''' REST_FRAMEWORK = { ’DEFAULT_THROTTLE_CLASSES’:[’unitls.throttle.VisitThrottle’], } ''' 使用DRF內置的限頻類 ''' from rest_framework.throttling import SimpleRateThrottle #推薦使用這種 class VisitThrottle(SimpleRateThrottle): #沒有登錄用戶,每分鐘訪問10次 scope = ’logined’ def get_cache_key(self, request, view): return request.user.username ''' 全局設置 ''' REST_FRAMEWORK = { ’DEFAULT_THROTTLE_RATES’:{ ’unlogin’:’10/m’, ’logined’:’3/m’, }, ’DEFAULT_THROTTLE_CLASSES’:[’unitls.throttle.VisitThrottle’], } '''版本控制

自定義版本控制類 ''' class ParmasVersion(object): def determine_version(self, request, *args, **kwargs):version = request.query_params.get(’version’)return version ''' 使用(局部) ''' class VersionView(APIView): #設置獲取版本的類 versioning_class = ParmasVersion ''' 全局設置 ''' ’DEFAULT_VERSIONING_CLASS’:’unitls.version.ParmasVersion’, ''' 使用 DRF內置的版本控制類QueryParameterVersioning(局部) ''' from rest_framework.versioning import QueryParameterVersioning class VersionView(APIView): #設置獲取版本的類 versioning_class = QueryParameterVersioning ''' 設置文件中的配置信息 ''' REST_FRAMEWORK = { ’VERSION_PARAM’:’version’, ’DEFAULT_VERSION’:’v1’, ’ALLOWED_VERSIONS’:[’v1’,’v2’], } ''' 全局設置 ''' REST_FRAMEWORK = { ’VERSION_PARAM’:’version’, ’DEFAULT_VERSION’:’v1’, ’ALLOWED_VERSIONS’:[’v1’,’v2’], ’DEFAULT_VERSIONING_CLASS’:’rest_framework.versioning.QueryParameterVersioning’, } ''' 使用 DRF內置的版本控制類URLPathVersioning(局部) ''' from rest_framework.versioning import URLPathVersioning class VersionView(APIView): #設置獲取版本的類 versioning_class = URLPathVersioning ''' 設置文件中的配置信息 ''' REST_FRAMEWORK = { ’VERSION_PARAM’:’version’, ’DEFAULT_VERSION’:’v1’, ’ALLOWED_VERSIONS’:[’v1’,’v2’], } ''' 全局設置 ''' REST_FRAMEWORK = { ’VERSION_PARAM’:’version’, ’DEFAULT_VERSION’:’v1’, ’ALLOWED_VERSIONS’:[’v1’,’v2’], ’DEFAULT_VERSIONING_CLASS’:’rest_framework.versioning.URLPathVersioning’, } ''' 如果使用URLPathVersioning,路由格式如下 ''' url(r'^(?P<version>[v1|v2]+)/version/',VersionView.as_view(),name=’vvvv’) ''' #使用 DRF內置的版本控制類URLPathVersioning 反向生成url地址 ''' #反向生成url地址 reverse obj = request.versioning_scheme url1 = obj.reverse(viewname=’orders’,request=request)#使用django的reverse方法反響生成url地址 from django.urls import reverse url2 = reverse(viewname=’orders’,kwargs={’version’:’v2’}) '''解析器

因為開發人員post請求上傳數據時,傳遞的數據類型不同,我們可能在request._request.POST中獲取不到數據 case1: Content-Type : application/x-www-form-urlencoded 服務端接收到的post請求的數據格式:username=xxxxx&age=18&sex=男 我們就可以在request._request.POST中獲取到數據 ''' class UserInfoView(APIView): def post(self,request,*args,**kwargs):username = request._request.POST.get(’username’)age = request._request.POST.get(’age’)sex = request._request.POST.get(’sex’) ''' case2:Content-Type:application/json 服務端接收到的post請求的數據格式就是json數據:{'username':'xxxx','age':'18','sex':'男'} 在request._request.POST中就獲取不到數據,但是在request.body中可以拿到 ''' class UserInfoView(APIView): def post(self,request,*args,**kwargs):import jsondata = json.loads(request.body.decode(’utf8’))print(data) ''' DRF內置的解析器FormParser,JSONParser 使用(局部): ''' from rest_framework.parsers import FormParser,JSONParser class UserInfoView(APIView): parser_classes = [FormParser,JSONParser] #這時DRF 內部代碼會根據request.Content-Type和解析器支持的media_type比較 從而選擇對應的解析器 def post(self,request,*args,**kwargs):# 如果使用JSONParser、FormParser解析數據的話data = request.dataprint(data)'''渲染器

渲染器 INSTALLED_APPS = [ ’rest_framework’, ] from rest_framework.renderers import BrowsableAPIRenderer,JSONRenderer,AdminRenderer class BookView(ModelViewSet): # 設置渲染器類型 renderer_classes = [JSONRenderer]序列化

Django的序列化 ''' #django序例化方式一 books = models.BookInfo.objects.all().values(’id’,’bookname’) books = list(books) print(type(books), books) self.ret[’books’] = books #django序例化方式二 books = models.BookInfo.objects.all() books = [model_to_dict(item) for item in books] self.ret[’books’] = books ''' DRF 序列化 第一種:繼承自serializers.Serializer ''' class BookDetailSerializer(serializers.Serializer): # 正常的字段序列化 id = serializers.IntegerField() bookname = serializers.CharField() author = serializers.CharField() category = serializers.IntegerField() bookdesc = serializers.CharField() # 獲取枚舉類型的文本是 source=get_字段名_display status = serializers.CharField( source=’get_status_display’ ) categoryname = serializers.CharField( source=’get_category_display’ ) # 自定義方法獲取字段 chpaters = serializers.SerializerMethodField() #序列化時可以自定義方法獲取字段 def get_chpaters(self,row): ''' row - > bookinfo ''' chpaters = models.ChpaterInfo.objects.filter(book=row) ser = ChpaterSerializer(instance=chpaters,many=True, context=self.context ) return ser.data ''' 序列化時生成url ''' url = serializers.HyperlinkedIdentityField( view_name=’chpaterdetail’, lookup_field=’id’, lookup_url_kwarg=’pk’, ) ''' 注意:如果序列化類中使用HyperlinkedIdentityField生成url,那我們在序例化時添加context={’request’: request} ''' ser = BookDetailSerializer( instance=obj,many=False, context={’request’: request} ) ''' 如果出現關聯關系時,獲取model對像的某一個字段 ''' bookname = serializers.CharField(source=’book.bookname’) ''' 第二種繼承自:serializers.ModelSerializer ''' class ChpaterDetailSerializer(serializers.ModelSerializer): #使用ModelSerializer進行章節詳情的序列化 bookname = serializers.CharField(source=’book.bookname’) class Meta: model = models.ChpaterInfo #fields = '__all__' fields = [’id’,’bookname’] ''' DRF (序列化時)自定義方法獲取數據 ''' book = serializers.SerializerMethodField() ''' ''' def get_book(self,row): ''' row - > UserInfo''' print(’======’,row.book.all()) ser = UsersBooksSerializer( instance=row.book.all(), many=True ) return ser.data ''' DRF depth深度的使用 # depth會根據關聯的數據不停的深入將數據獲取出來(最多不超過10層) # depth = 1 ''' class UsersSerializer(serializers.ModelSerializer): class Meta: model = models.UserInfo fields = '__all__' #depth會根據關聯的數據不停的深入將數據獲取出來(最多不超過10層) depth = 1 ''' DRF序列化的驗證功能 ''' class UsersSerializer(serializers.ModelSerializer): #自定義驗證錯誤的信息 username = serializers.CharField(error_messages={’required’:’用戶名不能為空’}) class Meta: model = models.UserInfo fields = '__all__' ''' ''' class UsersView(APIView): def post(self,request,*args,**kwargs): '''DRF 序列化自帶驗證功能''' data = request.data #print(data) ser = UsersSerializer(data=data) if ser.is_valid(): # ser.is_valid()y驗證數據的有效性print(’驗證后的數據’,ser.validated_data)#驗證后的數據正確后,保存數據至數據庫ser.save() else:#上傳數據不符合規范時ser.errors,返回錯誤詳細print(ser.errors) return Response(data) ''' 自定義字段驗證規則 ''' class UsersInfoSerializer(serializers.ModelSerializer): username = serializers.CharField(error_messages={’required’:’用戶名不能為空’}) class Meta:model = models.UserInfofields = '__all__' # 用戶名中必須包含老王兩個字,不包含則認為名字無效 def validate_username(self,validated_value):print(validated_value)from rest_framework.exceptions import ValidationErrorif ’老王’ not in validated_value:#驗證不通過,拋出異常 raise ValidationError(’用戶名不合法’)#驗證通過,返回數據return validated_value '''

以上就是python drf各類組件的用法和作用的詳細內容,更多關于python drf組件的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲男人的天堂网站 | 亚洲成人一 | 在线亚洲人成电影网站色www | 成年人网站免费在线观看 | 91资源在线 | 亚洲一区成人在线观看 | 亚洲国产成人久久 | 亚洲精品在线播放 | 亚洲精品在线视频 | 九九99九九 | 操人网| 精品无人乱码一区二区三区 | 先锋资源中文字幕 | 亚洲国产一区二区在线 | 中文字幕1区 | 欧美大片网站 | 精品无码三级在线观看视频 | 亚洲v欧美 | 一区欧美 | 天天澡天天狠天天天做 | 日韩一区欧美 | 日韩毛片一级 | 久久蜜桃精品一区二区三区综合网 | 精品免费国产一区二区三区 | 99精品欧美一区二区蜜桃免费 | 国产精品久久久久久久一区探花 | 999精品网 | 欧美成人精品在线 | 久久久久在线 | 免费观看一级毛片 | 午夜激情在线 | 久久一区| 欧美一级全黄 | 精品一区二区三区免费毛片 | 欧美视频一区二区三区在线观看 | 亚洲精品在线免费 | 欧美亚洲另类丝袜综合网动图 | 精品国产一区二区三区久久久蜜臀 | 视频精品一区 | 91免费观看 | 日本不卡高字幕在线2019 | 色135综合网| 成人在线观看av | 日本一区二区三区四区 | 91精品国产乱码久久蜜臀 | 国产高潮在线观看 | 每日更新亚洲 | 国产一区二区三区在线看 | 国产伦精品一区二区三区四区视频 | 国产精品久久久久久久久小说 | 欧美 日韩 国产 一区 | 精品一区国产 | 久久精品亚洲 | 欧美视频成人 | 色综合成人 | 亚洲综合视频 | 中文字幕一区二区三区不卡 | 日韩精品一区二区在线观看 | 国产精品久久久久久久久久久久久 | 日韩 国产 在线 | 国产高潮好爽受不了了夜色 | 999精品免费 | 91人人澡人人爽 | 成人激情视频在线观看 | 国产精品久久久久一区二区三区共 | 精品国产乱码一区二区三区 | 美女视频黄a | 日韩精品中文字幕一区二区三区 | 国产乱码精品一区二区三区手机版 | www.国产 | 午夜精品成人一区二区 | 欧美视频在线一区 | 国产一区二区精品在线 | 中文字幕国产 | 国产在线91 | 男女视频免费看 | 国产a免费| 91夜夜蜜桃臀一区二区三区 | 一区在线视频观看 | 久久精品国产99国产 | 欧美日韩免费在线 | jizz欧美最大 | 精品久久久免费视频 | 久久国产精品99久久久久久牛牛 | 中文字幕高清视频 | 精品免费国产视频 | 91色在线观看| 在线看免费的a | 欧美日韩一 | 男人天堂99| 爱爱视频网站 | 啵啵影院午夜男人免费视频 | 在线日韩 | 精品永久 | 男女羞羞视频免费在线观看 | 欧美精品一区二区三区蜜桃视频 | 日韩精品一二区 | 精品视频一区二区 | 中文字幕在线电影 | 久久亚洲天堂 | 91精品国产综合久久久久久丝袜 | 伊人av超碰久久久麻豆 | 国产成人一区 | 涩涩视频大全 | 天天影视网色香欲综合网无拦截 | 久久久久久久国产精品 | 欧美日韩精品一区 | 99这里只有精品视频 | 亚洲精品国精品久久99热 | 日韩视频一区二区三区四区 | 精品一区二区三区不卡 | 激情图区在线观看 | 精品一区视频 | 久草天堂 | 欧美久久久久久久久久久久久久 | 在线免费国产 | 精品精品久久 | 久久99国产伦子精品免费 | 午夜精品久久久久99蜜 | 九九久久精品 | 欧美全黄| 欧美一级在线观看 | 国产成人av在线 | 国产最新网址 | 成人精品久久久 | 日韩一区二区视频 | 国产欧美日韩一区二区三区 | 欧美三级视频 | 久久av一区 | av网站在线免费观看 | 91精品国产欧美一区二区 | 天堂在线中文 | 色播99| 99re免费视频精品全部 | 国产精品99久久免费观看 | 在线中文一区 | av在线免费观看一区二区 | 午夜三区 | 成人av片在线观看 | 亚洲午夜电影 | 天天艹综合 | 国产成人精品免费视频大全最热 | 毛片在线视频 | 中文字幕av黄色 | 丝袜美腿一区二区三区 | 999国内精品永久免费视频 | 精品一区二区三区在线观看 | av在线综合网 | 国产福利精品一区 | 久久精品性 | 久久久一区二区 | 亚洲美女性视频 | 99精品视频在线观看 | 久久精品一 | 精品国产伦一区二区三区观看说明 | 黄色片网站在线观看 | 91av在线免费看 | 亚洲日韩aⅴ在线视频 | 国产一区a | 四影虎影ww4hu55.com | 毛片综合 | 久久91精品国产 | 99精品九九 | 福利视频一区 | 亚洲精品66 | 免费毛片网站 | 国产精品欧美一区二区三区 | 黑人粗黑大躁护士 | 一区二区三区视频 | 亚洲 欧美 精品 | 欧美视频在线观看不卡 | 综合色播 | а天堂中文最新一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 伊人网伊人| 欧美日韩中文字幕在线 | 91精品国产综合久久久久久 | 在线欧美亚洲 | 一级毛片免费视频 | 日韩一区二区在线播放 | 一区二区免费视频 | 国产精品一区在线观看 | 老妇激情毛片免费 | 成人免费视频网站在线看 | 免费观看黄a一级视频 | 华人黄网站大全 | 久久综合一区二区三区 | 国产猛男猛女超爽免费视频网站 | 精品九九久久 | 伊人网国产 | 99热国产在线观看 | 日韩一区二区福利视频 | 欧美激情在线播放 | 亚州精品视频 | 一区二区三区国产 | 亚洲精品国产剧情久久9191 | 免费毛片一区二区三区久久久 | 欧美日韩国产一区二区 | 天天干天天操 | 久久一区二区三区四区五区 | 草草成人 | 欧美一区二区三区黄色 | 99久久精品一区二区成人 | 嫩草视频免费在线观看 | 久草久 | 99国产精品99久久久久久 | 欧洲亚洲精品久久久久 | zzzwww在线观看免 | 91精品国产91久久久久游泳池 | 久久一| 久热中文在线 | 毛片视频网站 | 亚洲精品久久 | 国产日韩精品视频 | 久久精品91久久久久久再现 | 天天操免费| 国产成人精品一区一区一区 | 久久精品亚洲 | 天天操天天摸天天干 | 亚洲视频在线看 | 国产成人综合av | 欧美日韩一区二区三区在线电影 | 成人免费一区二区三区视频网站 | 国产精品视频一 | www97影院| 一区二区三区视频 | 天天干欧美 | 日韩综合网| 午夜精品久久久久久久久 | 免费看性生交大片 | 国产一区二区视频在线播放 | 亚洲国产精品一区二区久久,亚洲午夜 | 精品亚洲永久免费精品 | 羞羞视频网站在线免费观看 | 比利时xxxx性hd极品 | 国产成人精品免高潮在线观看 | 91伦理片 | 精品美女在线 | 国产免费观看一区二区三区 | 日韩久久久 | 日韩91 | 久久久久中文字幕 | 国产一区 日韩 | 亚洲成人av在线 | 免费在线视频精品 | 91精品国产日韩91久久久久久 | 午夜小视频在线观看 | 视频久久精品 | 日韩在线欧美 | 色婷婷综合久久久中字幕精品久久 | 成人片网址 | 国产精品久久久久久亚洲调教 | 美女一级 | 亚洲精品v日韩精品 | 激情在线观看视频 | 亚洲精品成人在线 | 日韩不卡在线 | 成人精品视频在线观看 | 国产精品一二区 | 亚洲欧美日韩在线 | 91久久精品一区二区二区 | 精品一区二区免费视频 | 亚洲精品中文字幕乱码无线 | 在线欧美日韩 | 色综合色 | 91视频在线免费观看 | 国产视频二 | 精品国产不卡一区二区三区 | 亚洲精品99 | 91精品久久久久久久久中文字幕 | 国产情侣91| 国产一区二区久久久 | 欧美一区永久视频免费观看 | 亚洲免费在线看 | 天天夜夜操 | 国产视频中文字幕 | jlzzjlzz国产精品久久 | 国产欧美日韩综合精品一区二区 | 国产精品1区2区 | 欧美一区视频 | 91精品国产91综合久久蜜臀 | 久久精品国产一区二区三区不卡 | 国产午夜精品美女视频明星a级 | 新99热| 99久久精品国产一区二区成人 | 欧美视频网站 | 久久久麻豆 | 一级在线观看 | 久久在线| 久久精品国产精品青草 | 福利亚洲| 午夜免费电影 | 嫩草视频在线观看免费 | 欧美福利电影在线观看 | 国产精品久久久久久久久久久久 | 国产在线观看一区二区 | 色网网站 | 91中文在线观看 | 一区视频在线 | 丁香五月亚洲综合在线 | 国产一区二区视频在线 | 亚洲国产成人av | 一本色道精品久久一区二区三区 | 香蕉久久久久久 | 国产成人精品一区二 | 在线观看欧美一区 | 日日爱999 | 久久久久国产亚洲日本 | 日韩免费在线 | 欧美不卡视频 | 国产精品欧美久久久久一区二区 | 成人做爰9片免费视频 | 欧美成人一区二免费视频软件 | 色视频网站在线观看 | 日韩欧美一区二区在线观看视频 | 午夜精选视频 | 欧美1区2区3区 | 久久精品视频免费观看 | 成人黄色av | 国产精品久久久久影院色老大 | 欧美日韩国产精品一区二区亚洲 | 国产精品18久久久久久久久久久久 | av国产精品 | 中文字幕视频在线观看 | 亚洲伊人久久综合 | 蜜桃视频麻豆女神沈芯语免费观看 | 中文av在线免费观看 | 九九热精品视频 | 日韩视频在线一区二区 | 91在线精品秘密一区二区 | av一级毛片 | 免费成人av网 | 伊人手机在线视频 | 亚洲 欧美 另类 综合 偷拍 | 日韩欧美一级 | 色噜噜狠狠狠综合曰曰曰88av | 欧美成人一区二区三区片免费 | 国产91综合一区在线观看 | 91精彩视频在线观看 | 国产精品亚洲成在人线 | 精品少妇一区二区三区在线播放 | 日本高清h色视频在线观看 日日干日日操 | 久久久久久91亚洲精品中文字幕 | 成人精品一区二区三区 | 国产精品久久久久久吹潮 | 欧美a网站 | 国产成人午夜精品影院游乐网 | 国产午夜精品一区二区三区 | 青草青草久热精品视频在线观看 | 精品日韩一区二区 | 碰碰视频 | 亚洲视频在线观看 | 中文字幕成人影院 | 国产精品色婷婷亚洲综合看 | 精品国产乱码久久久久久1区2区 | 欧美福利二区 | 久久久久久久一区二区三区 | 国产伦精品一区二区三区在线 | 美女一区二区三区四区 | 亚洲国产成人在线 | 91在线视频在线 | 久草福利在线视频 | 国产成人精品亚洲日本在线观看 | 亚洲色图偷拍视频 | 中文字幕在线观看 | 久久99精品久久久 | 欧美视频三区 | 欧美日本三级 | 亚洲精品免费在线观看 | 欧美国产日韩一区 | 在线视频一区二区 | av一区二区在线播放 | 国产精品中文字幕在线 | 中文学幕专区 | 成人黄视频在线观看 | 成人性生交大片免费看中文带字幕 | 高清国产午夜精品久久久久久 | 精品国产91乱码一区二区三区 | 欧美aaa视频| 精品中出 | 欧美综合一区二区 | 在线视频亚洲 | 国产精品视频一区二区三区 | 国产精品乱码一区二区三区 | 国产激情免费 | 欧美自拍视频 | 成人午夜精品久久久久久久蜜臀 | 国产精品第一国产精品 | 免费高清一级毛片 | 国产精品久久久久一区二区三区 | 国产精品成人在线视频 | 99精品全国免费观看视频软件 | 红桃成人少妇网站 | 精品一区久久 | 性大毛片视频 | 欧美日韩视频第一页 | 色香蕉视频 | 日韩高清在线 | 色站综合| 在线一级电影 | 久久青 | 综合精品久久久 | 波多野吉衣网站 | 国产精品久久久久久久一区探花 | av网站在线免费看 | 成人小视频在线观看 | 日韩三级在线免费观看 | 欧美日韩中文字幕 | 欧美中文字幕 | 精品在线一区二区 | 国产日韩在线播放 | 日韩精品免费观看 | 天堂亚洲 | 久久三区| 国产精品久久久久久亚洲调教 | 欧美国产免费 | 91成人区| 成人午夜sm精品久久久久久久 | 亚洲欧美高清 | 一本色道久久综合狠狠躁篇的优点 | 久久久久久久91 | 在线视频一区二区 | 日韩欧美一区二区在线观看 | 中文字幕乱码亚洲精品一区 | 97久久超碰 | 成人欧美一区二区三区在线观看 | 国产欧美精品一区二区三区四区 | 日本综合色 | 久久九九精品视频 | 日日干夜夜干 | 久久99深爱久久99精品 | 91中文字幕| 国语av在线 | 日日操av| 草樱av| 91精品国产自产精品男人的天堂 | 国产情侣av自拍 | 亚洲伊人久久网 | 日韩午夜电影在线观看 | 国产精品久久久久久久久 | 天天干人人| 国产精品99久久久久久宅男 | 色久视频| 91精品国产综合久久福利 | 亚洲一区二区三区四区在线 | 人人人人澡 | 亚洲一区视频 | 精品无人乱码一区二区三区 | 国产精品久久一区二区三区 | 精品国产91亚洲一区二区三区www | av在线免费看片 | 草草视频网站 | 天堂免费在线观看视频 | 日韩精品在线网站 | 蜜臀av在线播放一区二区三区 | 91视频网 | 国产精品久久久久免费 | 亚洲网站久久 | 亚州中文字幕 | 亚洲高清av在线 | 蜜臀影院 | 国产一区二区视频精品 | 欧美成人高清视频 | 日韩精品视频在线观看免费 | 在线色网| 日韩精品在线播放 | 亚洲精品一区中文字幕乱码 | 亚洲一区二区三区爽爽爽爽爽 | 日日射天天干 | 亚洲精品一区在线观看 | 日日夜夜草| 天天干天天操天天舔 | 日韩精品一区二区三区在线 | 国产成人av在线 | 免费黄色在线 | 一区二区三区在线观看免费 | 午夜精品久久久久久久男人的天堂 | 国产一二在线 | 久草日韩| 成人国产精品视频 | 国产区精品在线 | 日本不卡一区 | www国产在线观看 | 亚洲福利在线观看 | 一区二区三区在线免费观看 | 精品亚洲一区二区 | 日韩电影一区二区三区 | 国产精品久久久久毛片软件 | 激情欧美一区二区三区中文字幕 | 国产在线第一页 | 成人午夜在线观看 | 三区视频 | 久草电影网| 欧美亚洲一区 | 色婷婷综合久久久中文字幕 | 欧美二三区| 久久久久久91亚洲精品中文字幕 | 国产福利一区二区三区视频 | 国产精品一区在线看 | 免费看一区二区三区 | 国产一区二区欧美 | av国产精品 | 国产欧美在线观看 | 成人国产| 337p亚洲欧洲 | 亚州男人天堂 | 亚洲系列| 天天干天天看天天操 | 精品天堂 | 蜜桃视频网站在线观看 | 日韩精品一区二区三区四区视频 | 国产成人一区二区三区 | 亚洲成人久久久 | 欧美乱轮 | 精品国偷自产国产一区 | 久久久.com | 亚洲风情在线观看 | 嫩草研究院在线观看入口 | 九九久久精品 | 97国产精品视频人人做人人爱 | 日韩不卡一区二区 | 国产成人精品综合 | 国产成人61精品免费看片 | 天堂网中文在线 | 精品视频在线观看一区二区 | 亚洲免费国产视频 | 中国一级大毛片 | 国产浪潮av色综合久久超碰 | 91精品国产综合久久久久久丝袜 | 国产 欧美 日韩 一区 | 国产一区二区久久久 | 日本中文字幕在线观看 | 亚洲欧美日本在线 | 国产韩国精品一区二区三区 | 米奇影视7777 | 日韩五月| 日韩av资源站 | 97久久精品人人做人人爽50路 | 欧美黄 片免费观看 | 日日爽天天操 | 国产精品久久久久久久久 | 国产激情一区二区三区 | 亚洲 欧美日韩 国产 中文 | 特a级片 | 国产精品久久久久久久一区探花 | 国产精品免费一区二区三区四区 | 特级丰满少妇一级aaaa爱毛片 | 中文字幕第90页 | 国产精选久久 | 精品久久久久久久久久久久 | 亚洲 欧美 精品 | 中文字幕亚洲精品 | 国产精品久久电影观看 | 中文字幕在线观看av | 久久久精品电影 | 一区二区三区精品视频 | 91高清视频在线观看 | 久久精品一区二区三区中文字幕 | av中文字幕在线播放 | av网站在线免费观看 | www.久草 | 日本久久精品电影 | 久久综合香蕉 | 亚洲成人aaa | 成人a网| 国产精品日产欧美久久久久 | 成人欧美一区二区三区在线播放 | 在线久草| 日韩综合 | 91.成人天堂一区 | 国产精品爱久久久久久久 | 亚洲综合大片69999 | 91亚洲国产精品 | 亚洲欧美一区二区三区久久 | 在线观看www | 中文字幕在线导航 | 中文成人无字幕乱码精品 | 天天插天天操 | 日本a在线 | 成人在线精品视频 | 日本成人小视频 | 高清av在线 | 青青草在线免费视频 | 色天天久久 | 久久精品免费一区二区三区 | 黄瓜av | 亚洲一区二区三区免费看 | 亚洲精品久久久 | 久久久免费视频播放 | 香蕉视频黄色 | 综合久久综合久久 | 久久欧美精品 | 精品亚洲一区二区三区四区五区 | 秋霞av电影 | 成人一区av | 亚洲三区在线观看 | 欧美日韩中文字幕 | 在线观看视频一区二区三区 | 欧美全黄| 不卡一区 | 国产在线观看一区 | 日韩一区二区三区在线播放 | 欧美xxxx网站 | 国产9色在线 | 日韩 | 欧美最猛性xxxxx亚洲精品 | 午夜寂寞少妇aaa片毛片 | 日韩一区二区在线播放 | 日韩在线免费视频 | 久久久久国产一区二区三区 | 亚洲综合视频 | 成人日韩av | 91丁香 | 欧美日韩国产高清视频 | www.伊人| 狠狠躁夜夜躁人人爽天天高潮 |