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

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

Django實現聊天機器人

瀏覽:3日期:2024-09-05 13:05:34
目錄實現原理第一步 安裝環境依賴第二步 配置Celery第三步 編寫機器人聊天主頁面第四步 編寫后臺websocket路由及處理方法第五步 編寫Celery異步任務第六步 運行看效果小結

演示效果如下所示:

Django實現聊天機器人

實現原理

用戶在聊天界面調用Celery異步任務,Celery異步任務執行完畢后發送結果給channels,然后channels通過websocket將結果實時推送給用戶。對于簡單的算術運算,Celery一般自行計算就好了。對于網上查找詩人簡介這樣的任務,Celery會調用Python爬蟲(requests+parsel)爬取古詩文網站上的詩人簡介,把爬取結果實時返回給用戶。

接下來我們來看下具體的代碼實現吧。

第一步 安裝環境依賴

首先在虛擬環境中安裝django和以下主要項目依賴。本項目使用了最新版本,為3.X版本。

# 主要項目依賴 pip install django pip install channels pip install channels_redis pip install celery pip install redis pip install eventlet # windows only # 爬蟲依賴 pip install requests pip install parsel

新建一個名為myproject的項目,新建一個app名為bots。如果windows下安裝報錯,如何解決自己網上去找吧,很容易解決。修改settings.py, 將channels和chat加入到INSTALLED_APPS里,并添加相應配置,如下所示:

INSTALLED_APPS = [ ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, ’channels’, # channels應用 ’bots’, # bots應用 ] # 設置ASGI應用 ASGI_APPLICATION = ’myproject.asgi.application’# 生產環境中使用redis做后臺,安裝channels_redisimport osCHANNEL_LAYERS = { 'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer','CONFIG': { 'hosts': [os.environ.get(’REDIS_URL’, ’redis://127.0.0.1:6379/2’)],}, },}

最后將bots應用的urls.py加入到項目urls.py中去,這和常規Django項目無異。

# myproject/urls.py from django.conf.urls import include from django.urls import path from django.contrib import admin urlpatterns = [ path(’bots/’, include(’bots.urls’)), path(’admin/’, admin.site.urls), ]第二步 配置Celery

pip安裝好Celery和redis后,我們要對其進行配置。分別修改myproject目錄下的__init__.py和celery.py(新建), 添加如下代碼:

# __init__.pyfrom .celery import app as celery_app__all__ = (’celery_app’,)# celery.pyimport osfrom celery import Celery# 設置環境變量os.environ.setdefault(’DJANGO_SETTINGS_MODULE’, ’myproject.settings’)# 實例化app = Celery(’myproject’)# namespace=’CELERY’作用是允許你在Django配置文件中對Celery進行配置# 但所有Celery配置項必須以CELERY開頭,防止沖突app.config_from_object(’django.conf:settings’, namespace=’CELERY’)# 自動從Django的已注冊app中發現任務app.autodiscover_tasks()# 一個測試任務@app.task(bind=True)def debug_task(self): print(f’Request: {self.request!r}’)

接著修改settings.py, 增加如下Celery配置:

# Celery配置CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'CELERY_TIMEZONE = TIME_ZONE# celery內容等消息的格式設置,默認jsonCELERY_ACCEPT_CONTENT = [’application/json’, ]CELERY_TASK_SERIALIZER = ’json’CELERY_RESULT_SERIALIZER = ’json’

完整Celery配置見:Django進階:萬字長文教你使用Celery執行異步和周期性任務(多圖)

第三步 編寫機器人聊天主頁面

本例我們只需要利用django普通視圖函數編寫1個頁面,用于展示首頁(index)與用戶交互的聊天頁面。這個頁面對應的路由及視圖函數如下所示:

# bots/urls.py from django.urls import path from . import views urlpatterns = [ path(’’, views.index, name=’index’), ] # bots/views.py from django.shortcuts import render def index(request): return render(request, ’bots/index.html’, {})

接下來我們編寫模板文件index.html,它的路徑位置如下所示:

bots/ __init__.py templates/ bots/ index.html urls.py views.py

index.html內容如下所示。

<!DOCTYPE html><html><head> <meta charset='utf-8'/> <title>Django+Channels+Celery聊天機器人</title></head><body><textarea id='chat-log' cols='100' rows='20' readonly></textarea><br/><input type='text' size='100' placeholder='輸入`help`獲取幫助信息.'/><br/><input id='chat-message-submit' type='button' value='Send'/> <script> var wss_protocol = (window.location.protocol == ’https:’) ? ’wss://’: ’ws://’; var chatSocket = new WebSocket(wss_protocol + window.location.host + ’/ws/bots/’); chatSocket.onopen = function(e) {document.querySelector(’#chat-log’).value +=(’歡迎來到大江狗Django聊天機器人. 請輸入`help`獲取幫助信息.n’)} chatSocket.onmessage = function(e) {var data = JSON.parse(e.data);var message = data[’message’];document.querySelector(’#chat-log’).value += (message + ’n’); }; chatSocket.onclose = function(e) {document.querySelector(’#chat-log’).value +=(’Socket closed unexpectedly, please reload the page.n’)}; document.querySelector(’#chat-message-input’).focus(); document.querySelector(’#chat-message-input’).onkeyup = function(e) {if (e.keyCode === 13) { // enter, return document.querySelector(’#chat-message-submit’).click();} }; document.querySelector(’#chat-message-submit’).onclick = function(e) {var messageInputDom = document.querySelector(’#chat-message-input’);var message = messageInputDom.value;chatSocket.send(JSON.stringify({ ’message’: message})); messageInputDom.value = ’’; };</script></body></html>第四步 編寫后臺websocket路由及處理方法

當 channels 接受 WebSocket 連接時, 它也會根據根路由配置去查找相應的處理方法。只不過channels的websocket路由不在urls.py中配置,處理函數也不寫在views.py。在channels中,這兩個文件分別變成了routing.py和consumers.py。

在bots應用下新建routing.py, 添加如下代碼。它的作用是將發送至ws/bots/的websocket請求轉由BotConsumer處理。

from django.urls import re_pathfrom . import consumerswebsocket_urlpatterns = [ re_path(r’ws/bots/$’, consumers.BotConsumer.as_asgi()),]

注意:定義websocket路由時,推薦使用常見的路徑前綴 (如/ws) 來區分 WebSocket 連接與普通 HTTP 連接, 因為它將使生產環境中部署 Channels 更容易,比如nginx把所有/ws的請求轉給channels處理。

與Django類似,我們還需要把這個app的websocket路由加入到項目的根路由中去。編輯myproject/asgi.py, 添加如下代碼:

# myproject/asgi.pyimport osfrom channels.auth import AuthMiddlewareStackfrom channels.routing import ProtocolTypeRouter, URLRouterfrom django.core.asgi import get_asgi_applicationimport chat.routingimport bots.routingos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')application = ProtocolTypeRouter({ 'http': get_asgi_application(), # websocket請求使用的路由 'websocket': AuthMiddlewareStack(URLRouter( bots.routing.websocket_urlpatterns) )})

接下來在bots應用下新建consumers.py, 添加如下代碼:

import jsonfrom asgiref.sync import async_to_syncfrom channels.generic.websocket import WebsocketConsumerfrom . import tasksCOMMANDS = { ’help’: {’help’: ’命令幫助信息.’, }, ’add’: {’args’: 2,’help’: ’計算兩個數之和, 例子: `add 12 32`.’,’task’: ’add’ }, ’search’: {’args’: 1,’help’: ’通過名字查找詩人介紹,例子: `search 李白`.’,’task’: ’search’ },}class BotConsumer(WebsocketConsumer): def receive(self, text_data):text_data_json = json.loads(text_data)message = text_data_json[’message’]response_message = ’請輸入`help`獲取命令幫助信息。’message_parts = message.split()if message_parts: command = message_parts[0].lower() if command == ’help’:response_message = ’支持的命令有:n’ + ’n’.join( [f’{command} - {params['help']} ’ for command, params in COMMANDS.items()]) elif command in COMMANDS:if len(message_parts[1:]) != COMMANDS[command][’args’]: response_message = f’命令`{command}`參數錯誤,請重新輸入.’else: getattr(tasks, COMMANDS[command][’task’]).delay(self.channel_name, *message_parts[1:]) response_message = f’收到`{message}`任務.’ async_to_sync(self.channel_layer.send)( self.channel_name, {’type’: ’chat.message’,’message’: response_message }) def chat_message(self, event):message = event[’message’]# Send message to WebSocketself.send(text_data=json.dumps({ ’message’: f’[機器人]: {message}’}))

上面代碼中最重要的一行如下所示。BotConsumer在接收到路由轉發的前端消息后,對其解析,將當前頻道名和解析后的參數一起交由Celery異步執行。Celery執行任務完成以后會將結果發到這個頻道,這樣就實現了channels和Celery的通信。

getattr(tasks, COMMANDS[command][’task’]).delay(self.channel_name, *message_parts[1:])第五步 編寫Celery異步任務

在bots目錄下新建`tasks.py`,添加如下代碼:

from asgiref.sync import async_to_syncfrom celery import shared_taskfrom channels.layers import get_channel_layerfrom parsel import Selectorimport requestschannel_layer = get_channel_layer()@shared_taskdef add(channel_name, x, y): message = ’{}+{}={}’.format(x, y, int(x) + int(y)) async_to_sync(channel_layer.send)(channel_name, {'type': 'chat.message', 'message': message}) print(message)@shared_taskdef search(channel_name, name): spider = PoemSpider(name) result = spider.parse_page() async_to_sync(channel_layer.send)(channel_name, {'type': 'chat.message', 'message': str(result)}) print(result)class PoemSpider(object): def __init__(self, keyword):self.keyword = keywordself.url = 'https://so.gushiwen.cn/search.aspx' def parse_page(self):params = {’value’: self.keyword}response = requests.get(self.url, params=params)if response.status_code == 200: # 創建Selector類實例 selector = Selector(response.text) # 采用xpath選擇器提取詩人介紹 intro = selector.xpath(’//textarea[starts-with(@id,'txtareAuthor')]/text()’).get() print('{}介紹:{}'.format(self.keyword, intro)) if intro:return introprint('請求失敗 status:{}'.format(response.status_code))return '未找到詩人介紹。'

以上兩個任務都以channel_name為參數,任務執行完畢后通過channel_layer的send方法將結果發送到指定頻道。

注意:

- 默認獲取channel_layer的方式是調用接口:channels.layers.get_channel_layer()。如果是在consumer中調用接口的話可以直接使用self.channel_layer。

- 對于channel layer的方法(包括send()、group_send(),group_add()等)都屬于異步方法,這意味著在調用的時候都需要使用await,而如果想要在同步代碼中使用它們,就需要使用裝飾器asgiref.sync.async_to_sync

第六步 運行看效果

如果不出意外,你現在的項目布局應該如下所示。說實話,整個項目一共沒幾個文件,Python的簡潔和效率真是出了名的好啊。

Django實現聊天機器人

連續運行如下命令,就可以看到我們文初的效果啦。

# 啟動django測試服務器 python manage.py makemigrations python manage.py migrate python manage.py runserver # windows下啟動Celery需eventlet # 啟動Celery前確定redis服務已開啟哦 Celery -A myproject worker -l info -P eventlet小結

本文我們使用Django + Channels + Celery + Redis打造了一個聊天機器人,既會算算術,還會查古詩文。借用這個實現原理,你可以打造非常有趣的實時聊天應用哦,比如在線即時問答,在線客服,實時查詢訂單,Django版的siri美女等等。

Django Channels + Websocket + Celery聊天機器人項目源碼地址:https://github.com/shiyunbo/django-channels-chatbot

以上就是Django實現聊天機器人的詳細內容,更多關于Django 聊天機器人的資料請關注好吧啦網其它相關文章!

標簽: Django
相關文章:
主站蜘蛛池模板: 久久成人在线视频 | 国产69精品99久久久久久宅男 | 中文字幕一区二区三区乱码图片 | 嫩草网站入口 | 国产精品美女久久久久aⅴ国产馆 | 日韩欧美在线看 | 国产精品久久久久精 | 免费一级毛片 | 日韩在线观看视频免费 | 日本久久久久久久久久久久 | 麻豆资源 | 天天草天天插 | 欧美日韩一区二区三区 | 日韩一区二区三区在线视频 | 国产999精品久久久久 | 福利久久| 韩日av在线| 9色porny自拍视频一区二区 | 天天草av| 免费毛片在线 | 亚洲一区亚洲二区 | 91久久精品国产91久久性色tv | 欧美狠狠操 | 日韩视频―中文字幕 | 久久91 | 国产精品久久久久无码av | 91九色最新 | 久久99精品久久久久久久青青日本 | 日韩在线大片 | 久色视频在线 | 欧美精品三区 | 伊人久麻豆社区 | 99热在线看 | 伊人网站 | 天堂在线中文字幕 | 欧美精品亚洲精品日韩精品 | 久久亚洲一区二区三区四区 | 精品日韩 | www.99精品| 狠狠操夜夜操 | 春色导航 | 99在线精品视频 | 日韩在线视频一区 | 国产精品美女久久久久aⅴ国产馆 | av片免费| 麻豆乱码国产一区二区三区 | 伊人久久婷婷 | 成人一区在线观看 | 99久久国产 | 久久国产精品99久久久久久牛牛 | 国产伦精品一区二区三区照片91 | 99色综合| av在线一区二区 | 成人亚洲精品 | 欧美精品1区2区3区 精品国产欧美一区二区 | 欧美女优在线视频 | 久久久网页 | 日韩一区二区不卡 | 欧美精品久久久 | www国产在线观看 | 国产一区二区视频在线观看 | 九九亚洲精品 | 香蕉久久网 | 黄色a级网站 | 成人免费毛片高清视频 | 亚洲精品在 | 2019天天干| 奇米影| 国产精品黄网站在线观看 | sis色中色 | 精品视频一区二区在线 | www国产精品 | 国产精选一区二区三区不卡催乳 | 国产精品久久久久久久久免费丝袜 | 久久久久久久一区 | 午夜成人免费视频 | 91麻豆产精品久久久久久 | 午夜影院免费看 | 黄色精品网站 | 中文字幕一区二区三区四区五区 | 精品国产乱码久久久久久1区2区 | 麻豆精品一区二区 | 激情欧美日韩一区二区 | 免费看毛片的网站 | 日韩精品一区二区三区在线 | 成人精品鲁一区一区二区 | 在线a电影 | 日韩福利影院 | 日韩欧美不卡 | 淫片一级国产 | www.成人在线视频 | 天天干天天插天天 | 91精品一区二区三区久久久久久 | 日韩午夜视频在线观看 | 亚洲精选免费视频 | 国产精品久久久久久一区二区三区 | 在线视频一区二区三区 | 久久毛片 | 在线a视频 | 久草在线视频免费播放 | 久草在线观看福利视频 | 亚洲欧美另类久久久精品2019 | 婷婷五月在线视频 | 久久久国产精品入口麻豆 | 91精品在线观看入口 | 久久久久亚洲精品 | 一区日韩 | 午夜视频免费网站 | 毛片视频观看 | 国产欧美精品一区二区色综合 | 色必久久| 一区二区三区播放 | 亚洲精品一区在线观看 | 欧美久久a| 亚洲成人另类 | 久久1区 | 专干老肥女人88av | 日韩欧美在线观看视频网站 | 亚洲欧美一区二区三区在线 | 精品久久久久久国产 | 日韩精品一区二区三区四区视频 | 成人精品视频在线 | 国产午夜精品久久久久免费视高清 | 久久青| 日韩中文在线观看 | 黄色毛片在线观看 | 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 精品国产一区二区三区av片 | 人妖天堂狠狠ts人妖天堂狠狠 | 国产精品久久久久久一区二区三区 | 午夜视频在线免费观看 | 另类视频在线 | 9久9久 | 天天干干干干 | 国产在线2| 男女视频免费在线观看 | av手机电影| 国产欧美精品一区aⅴ影院 毛片视频网站 | 精品在线免费视频 | 夫妻午夜影院 | 四虎永久免费在线 | 国产精品中文字幕在线 | 成年人黄色一级毛片 | 婷婷亚洲综合 | 国产一区二区在线看 | 黄p在线看 | 天天插狠狠插 | 日韩欧美在线观看一区二区 | 超碰一区二区三区 | 久久久国产一区二区三区 | 亚洲在线视频 | 日韩中文字幕一区二区 | 亚洲视频中文字幕 | 午夜精品在线 | 亚洲国产精品99久久久久久久久 | 亚洲激情一区 | 日韩av一区二区在线观看 | 久久久看片 | 一区在线视频观看 | 久久色av | 视频一区二区三区中文字幕 | 欧美一区亚洲二区 | 国产精品资源在线 | 色天天天天色 | 欧美日韩亚洲一区 | 日日操狠狠操 | 99精品一区二区三区 | 婷婷亚洲五月 | 好看毛片| 在线精品国产 | 亚洲免费观看视频 | 91久久久久久久久久久久久 | 日韩精品一区二区三区视频播放 | 欧美一区二区三区在线视频 | 久久久久久网站 | 黄色毛片看看 | 国产精品不卡视频 | 日韩综合一区 | 伊人激情av一区二区三区 | 韩日免费视频 | 另类免费视频 | 91精品在线观看入口 | 亚洲大尺度网站 | 国产精品久久久久久久久 | 亚洲www啪成人一区二区 | 色偷偷噜噜噜亚洲男人 | 免费日韩成人 | 国产精品美女久久久久久免费 | av在线成人 | 国产精品视频免费观看 | 成人精品在线观看 | 亚洲人人艹 | 日产久久 | 久久久久久久国产精品 | 久久久久综合 | 作爱视频免费看 | 久久婷婷色 | 欧美一区二区在线 | www.日本三级 | 欧美精品一区视频 | 五月在线视频 | 自拍偷拍亚洲欧洲 | 91视频电影 | 嫩草网站入口 | 久久久成| 九九免费视频 | 亚洲一区视频在线 | av久久 | 国产小视频在线 | 亚洲精品资源在线观看 | 播放一级黄色片 | 黑人巨大精品欧美黑白配亚洲 | 久久美女视频 | 久久国产午夜 | 日韩av视屏 | 久久久久国产一区二区三区四区 | 欧美aaaaa| 精品国产一级片 | 日本一区二区不卡 | 成人在线观看免费视频 | 成人超碰在线观看 | 国产欧美在线一区二区 | 日本a在线 | 午夜午夜精品一区二区三区文 | 精品无码三级在线观看视频 | 亚洲国产精品久久人人爱 | av一区二区在线播放 | 国产99在线播放 | 黄的视频网站 | 九九久久精品 | 精品一二三区 | 福利精品视频 | 一区二区三区成人久久爱 | 日本综合色 | 欧美成人精品一区二区三区 | 久久aⅴ乱码一区二区三区 91综合网 | 欧美一区永久视频免费观看 | 黄网站在线播放 | 欧美一区二区三区在线视频 | 免费99精品国产自在在线 | 国产乱码精品一区二区三区忘忧草 | 欧美精品1区2区3区 精品国产欧美一区二区 | 久久综合久久综合久久综合 | 欧美三级在线 | 久久中文字幕一区 | 免费不卡视频 | 激情久久久久 | 免费在线看a | 日韩在线免费 | 日韩精品一区二区三区 | 国产精品久久久久久久久 | 黄色片在线免费看 | 一区二区三区四区在线播放 | 国产精品九九九 | 久久一区二区三 | 无码少妇一区二区三区 | 99青青草| 亚洲欧美激情精品一区二区 | 国产福利在线观看 | 日本在线小视频 | 欧美一级艳情片免费观看 | 日本在线免费电影 | 久久全国免费视频 | 久久精品欧美一区二区三区不卡 | 国产999精品久久久久久麻豆 | 免费国产视频 | 亚洲国产成人精品女人久久久 | 欧美精三区欧美精三区 | 欧美日韩在线精品 | 亚洲永久免费视频 | 亚洲久久 | 91中文在线观看 | 午夜精品久久久久久久久久久久 | 亚洲三级在线看 | 一区二区三区在线免费看 | 欧美一区二区三区精品 | 亚洲综合色视频在线观看 | 精品久久久久久久久福利 | 欧美精品成人一区二区在线 | 欧美一级在线免费观看 | 国产精品久久久久久久免费大片 | 国产午夜久久 | 亚洲综合色视频在线观看 | 亚洲天天干 | 岛国av免费 | 91国产精品 | 久久综合伊人 | 亚洲欧美综合 | www色婷婷 | 精品国产三级 | 午夜久久av | 日韩成人免费视频 | 欧美国产日韩一区 | 精品国产一区二区三区性色av | 国产精品国产 | 天天干天操 | 日韩在线欧美 | 中文字幕高清 | 99精品视频网 | 国产精品第一 | 日韩欧美在线播放视频 | 激情婷婷 | 亚洲天堂成人 | 精品国产不卡一区二区三区 | 亚洲视频免费在线观看 | 99久久精品国产一区二区三区 | aaa在线 | 中文字幕在线视频网站 | 超碰人人射 | 亚洲一区免费视频 | 亚洲成人在线视频观看 | 久久少妇免费看 | 午夜精品福利网 | 亚洲精品在线播放视频 | 国产在线色 | 天天干人人干 | 一区二区三区在线观看视频 | 亚洲精品专区 | 欧日韩不卡在线视频 | 国产一区二精品区在线 | 中文在线视频 | 日韩视频久久 | 久久久久久亚洲精品视频 | 波多野结衣一区二区三区中文字幕 | 色呦呦日韩 | 天天舔日日干 | 日本 欧美 三级 高清 视频 | 色综合天天综合网国产成人网 | 在线观看av网站永久 | 日韩欧美一区二区在线观看视频 | 久久九九国产精品 | 91短视频版在线观看www免费 | 国产草草视频 | 久久精品国产视频 | 久久久国产精品 | 久久亚洲精品中文字幕 | 99热播在线 | 午夜影院免费体验区 | 国产视频久久精品 | www日韩欧美 | 特黄特黄aaaa级毛片免费看 | 九一视频在线观看 | 一级二级黄色大片 | 中文在线一区二区 | 91精品国产99久久久 | 嫩草影院网站入口 | 精品乱子伦一区二区三区 | 久草热视频 | 中文字幕在线精品 | 亚洲三级在线看 | 97爱爱视频 | 成年人在线视频 | 亚洲精品综合 | 免费看91 | 日韩精品www | 国产精品精品视频一区二区三区 | 中文av在线播放 | 久草在线免费福利资源 | 久久激情五月丁香伊人 | 91破解版在线 | 亚洲 | 国产精品日产欧美久久久久 | 婷婷亚洲五月 | 亚洲成人精品 | 国产精品久久久久久久久久久新郎 | 国产日韩欧美视频 | 久久精品久久精品国产大片 | 欧美一级做性受免费大片免费 | 伊人春色成人 | 日韩国产欧美一区 | 国产99久久 | 色视频在线免费观看 | 日韩国产精品一区二区 | 国产精品永久免费自在线观看 | 欧美视频一区二区三区在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日韩亚洲视频 | 一区二区三区精品 | 欧美日韩精品一区 | 暖暖成人免费视频 | 亚洲欧美一区二区在线观看 | 精品自拍视频 | 亚洲激情一区 | 欧美精品欧美极品欧美激情 | aaa在线 | 久久久美女 | 久久精品一区二区三区中文字幕 | 国产免费久久 | 亚洲91精品 | 欧美久久精品 | 欧美在线二区 | 中文精品在线 | 91精品一区二区三区久久久久久 | 91人人看 | 黄色三级视频 | 色婷婷基地 | 久久网一区二区三区 | 久久国产欧美日韩精品 | 在线免费av观看 | 久久精品中文 | av7777| 日韩视频在线观看 | 久久久午夜爽爽一区二区三区三州 | 亚洲精品一区二三区不卡 | 亚洲激情视频在线观看 | 国内精品国产成人国产三级粉色 | 亚洲成人精品一区二区三区 | 亚洲美乳中文字幕 | 亚洲成人激情在线观看 | 综合99 | 国产视频久久 | 欧美精品成人一区二区三区四区 | 一区二区三区回区在观看免费视频 | 国产一级淫免费播放m | 天天操天天碰 | 国产二区视频 | 国产精品美女久久久久久免费 | 欧美14一18处毛片 | 国产成人精品一区二 | 国产成人精品久久二区二区 | 91久草视频 | 九九久久久 | 久久国产美女 | 久久久久国产 | 狠狠综合久久 | 九九热在线免费视频 | 国产干干干 | 亚洲一区中文字幕在线观看 | 精品久久久久国产免费 | 91精品视频在线 | 久久久一区二区 | 中文字幕一区二区三区不卡 | 美女国产网站 | 亚洲精品亚洲人成人网 | 久久精品视 | 五月天婷婷综合 | 国产成人精品一区二区三区视频 | 在线成人www免费观看视频 | 91xxx在线观看 | 偷拍电影一区二区三区 | 国产精品久久久久久一区二区三区 | 久久精品色欧美aⅴ一区二区 | 播放一级毛片 | 欧美a在线 | 日韩专区视频 | 二区在线视频 | 91亚洲国产成人久久精品网站 | 中文字幕精品视频在线观看 | 亚洲精品日本 | 艹逼网 | 嫩草视频免费在线观看 | 亚洲高清在线视频 | 一区二区在线看 | 成 人 a v天堂 | 99精品久久久久久久免费看蜜月 | 亚洲视频在线观看 | 免费午夜视频 | 麻豆国产露脸在线观看 | 亚洲精品成人久久久 | 日韩免费在线视频 | 亚洲综合精品 | 亚洲aⅴ| 久久一区 | 国产一区二区在线免费观看 | 中文字幕在线观看 | 中文久久| 国产无区一区二区三麻豆 | 一级成人免费 | 毛片在线免费 | 中文字幕成人网 | 久久噜噜噜精品国产亚洲综合 | 一本色道精品久久一区二区三区 | 黄色片网站在线观看 | 日韩国产一区二区三区 | 超碰天堂| 综合二区 | 国产精品网站在线观看 | 91久久国产综合久久蜜月精品 | 亚洲人人| 在线观看免费视频a | 久久久精品日韩 | 永久91嫩草亚洲精品人人 | 伊人伊人伊人 | 日韩午夜一级片 | 亚洲欧美综合 | 午夜视频在线观看网站 | 欧美自拍视频在线 | 亚洲一区在线免费观看 | 性视频网站免费 | 性色国产| 中文字幕亚洲一区二区三区 | 亚洲黄色成人 | 欧美日韩在线免费观看 | 91精品一区二区 | 免费av一区二区三区 | 高清久久 | 日韩三级在线 | 成人免费视屏 | 欧美日韩中文在线 | 天天干夜夜爽 | 日韩av一区二区三区在线观看 | 求av网址 | 国产精品三级久久久久久电影 | 91精品久久 | 免费av在线播放 | 午夜男人天堂 | 亚洲精品网址 | 欧美激情国产日韩精品一区18 | 97在线视频免费 | 一区二区手机在线 | 日韩在线| 久久精品久久久 | 日韩精品一区二区三区 | 国产九九av | 国产一级特黄aaa大片 | 一级免费视频 | 成人在线观看免费视频 | 亚洲久草| 久久久久久久91 | 中文字幕 在线观看 | 国产精品久久久久久久久久久免费看 | 久产久精品 | 卡通动漫第一页 | 九九在线国产视频 | 精品99免费| 一区二区福利 | 久久精品 | 国产99精品在线 | 精品国产乱码久久久久久1区2区 | 国内精品久久久久久中文字幕 | 91麻豆精品国产91久久久久久久久 | 激情福利视频 | 中文字幕在线视频免费播放 | 国产午夜视频在线观看 | 97久久精品人人做人人爽50路 | 欧美喷潮久久久xxxxx | 日日躁夜夜操 | 精品欧美视频 | 天天干天天操 | 一区二区视频 | 国产精品久久久久久久久久妞妞 | 91麻豆精品国产91久久久更新资源速度超快 | 99亚洲| 久久综合九九 | 成人午夜精品一区二区三区 | 精品免费 | 日韩中文字幕在线观看 | www.国产精 | 久久免费小视频 | 欧美不卡一区二区三区 | 亚洲精品无 | 91视频在线播放视频 | 激情91| av综合站| 男女羞羞视频在线免费观看 | 精品国产综合 | 亚洲八区 | 大黑人交xxx极品hd | 日韩成人精品视频 | 国产精品久久久久久久久久 | 久久精品国产亚洲一区二区三区 | 嫩草精品| 91精品在线观看入口 | 亚洲aⅴ天堂av在线电影软件 | 国产一区二区三区在线视频 | 久久99精品视频 | 国产高清免费视频 | 99热在线免费观看 | 亚洲精品视频在线播放 | 国产精品久久久久久久久久久久久 | 成人免费看黄色 | heyzo 在线| 天天操天天舔天天爽 | 亚洲成人av在线 | 国产精品久久久久久久久久久久久久 | 一区二区在线视频 | 91精品国产日韩91久久久久久 | 国产精品一区二区精品 | 欧美日韩另类在线 | 天天干人人 | 欧美一级网 | 亚洲视频区 | 亚洲精品亚洲人成人网 | 午夜影院免费观看 | 日韩电影一区 | 亚洲艹| 日韩欧美国产电影 | 日韩污视频在线观看 | 成人不卡在线观看 | 黑人xxx视频 | 日韩高清在线一区 | 超碰一区 | 日韩资源 | 日本激情视频在线播放 | 免费视频二区 | 欧美久久影视 | 国产精品99久久久久久动医院 | 国产成人精品久久 | 在线播放国产精品 | 亚洲男人天堂网 | 日韩国产精品视频 | 精品一区二区三区不卡 | 日韩在线成人 | 黄视频入口 | 黄色毛片免费看 | 国产欧美一区二区 | 少妇av片 | 国产二区三区 | 国产欧美在线播放 | 91成人在线| 99免费观看视频 | 一本大道久久a久久精二百 亚洲欧美高清 | 精品国产一区在线 | 色爱区综合五月激情 | 中文字幕亚洲精品 | 国产久|