成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Django實現(xiàn)聊天機器人

Django實現(xiàn)聊天機器人

熱門標(biāo)簽:市場上的電銷機器人 地圖標(biāo)注面積 小蘇云呼電話機器人 北瀚ai電銷機器人官網(wǎng)手機版 北京電銷外呼系統(tǒng)加盟 所得系統(tǒng)電梯怎樣主板設(shè)置外呼 儋州電話機器人 朝陽手機外呼系統(tǒng) 佛山400電話辦理

演示效果如下所示:

實現(xiàn)原理

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

接下來我們來看下具體的代碼實現(xiàn)吧。

第一步 安裝環(huán)境依賴

首先在虛擬環(huán)境中安裝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下安裝報錯,如何解決自己網(wǎng)上去找吧,很容易解決。修改settings.py, 將channels和chat加入到INSTALLED_APPS里,并添加相應(yīng)配置,如下所示:

 INSTALLED_APPS = [
       'django.contrib.admin',
       'django.contrib.auth',
       'django.contrib.contenttypes',
       'django.contrib.sessions',
       'django.contrib.messages',
       'django.contrib.staticfiles',
       'channels', # channels應(yīng)用     
       'bots', # bots應(yīng)用
    ]

 # 設(shè)置ASGI應(yīng)用
 ASGI_APPLICATION = 'myproject.asgi.application'

# 生產(chǎn)環(huán)境中使用redis做后臺,安裝channels_redis
import os
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [os.environ.get('REDIS_URL', 'redis://127.0.0.1:6379/2')],
        },
    },
}

最后將bots應(yīng)用的urls.py加入到項目urls.py中去,這和常規(guī)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__.py
from .celery import app as celery_app
__all__ = ('celery_app',)

# celery.py
import os
from celery import Celery

# 設(shè)置環(huán)境變量
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中發(fā)現(xiàn)任務(wù)
app.autodiscover_tasks()

# 一個測試任務(wù)
@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內(nèi)容等消息的格式設(shè)置,默認json
CELERY_ACCEPT_CONTENT = ['application/json', ]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

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

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

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

 # 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內(nèi)容如下所示。

!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 id="chat-message-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路由及處理方法

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

在bots應(yīng)用下新建routing.py, 添加如下代碼。它的作用是將發(fā)送至ws/bots/的websocket請求轉(zhuǎn)由BotConsumer處理。

from django.urls import re_path

from . import consumers

websocket_urlpatterns = [
    re_path(r'ws/bots/$', consumers.BotConsumer.as_asgi()),
]

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

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

# myproject/asgi.py
import os

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import chat.routing
import bots.routing

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    # websocket請求使用的路由
    "websocket": AuthMiddlewareStack(
        URLRouter(
            bots.routing.websocket_urlpatterns
        )
    )
})

接下來在bots應(yīng)用下新建consumers.py, 添加如下代碼:

import json
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer

from . import tasks

COMMANDS = {
    'help': {
        'help': '命令幫助信息.',
    },
    'add': {
        'args': 2,
        'help': '計算兩個數(shù)之和, 例子: `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}`參數(shù)錯誤,請重新輸入.'
                else:
                    getattr(tasks, COMMANDS[command]['task']).delay(self.channel_name, *message_parts[1:])
                    response_message = f'收到`{message}`任務(wù).'
                    
        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 WebSocket
        self.send(text_data=json.dumps({
            'message': f'[機器人]: {message}'
        }))

上面代碼中最重要的一行如下所示。BotConsumer在接收到路由轉(zhuǎn)發(fā)的前端消息后,對其解析,將當(dāng)前頻道名和解析后的參數(shù)一起交由Celery異步執(zhí)行。Celery執(zhí)行任務(wù)完成以后會將結(jié)果發(fā)到這個頻道,這樣就實現(xiàn)了channels和Celery的通信。

getattr(tasks, COMMANDS[command]['task']).delay(self.channel_name, *message_parts[1:])

第五步 編寫Celery異步任務(wù)

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

from asgiref.sync import async_to_sync
from celery import shared_task
from channels.layers import get_channel_layer
from parsel import Selector
import requests

channel_layer = get_channel_layer()

@shared_task
def 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_task
def 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 = keyword
        self.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:
            # 創(chuàng)建Selector類實例
            selector = Selector(response.text)
            # 采用xpath選擇器提取詩人介紹
            intro = selector.xpath('//textarea[starts-with(@id,"txtareAuthor")]/text()').get()
            print("{}介紹:{}".format(self.keyword, intro))
            if intro:
                return intro

        print("請求失敗 status:{}".format(response.status_code))
        return "未找到詩人介紹。"

以上兩個任務(wù)都以channel_name為參數(shù),任務(wù)執(zhí)行完畢后通過channel_layer的send方法將結(jié)果發(fā)送到指定頻道。

注意:

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

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

第六步 運行看效果

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

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

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

小結(jié)

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

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

以上就是Django實現(xiàn)聊天機器人的詳細內(nèi)容,更多關(guān)于Django 聊天機器人的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python實戰(zhàn)整活之聊天機器人
  • Python如何實現(xiàn)機器人聊天
  • vue.js實現(xiàn)h5機器人聊天(測試版)
  • python操作微信自動發(fā)消息的實現(xiàn)(微信聊天機器人)
  • Python使用20行代碼實現(xiàn)微信聊天機器人
  • jquery實現(xiàn)聊天機器人
  • 基于python的itchat庫實現(xiàn)微信聊天機器人(推薦)
  • nodejs實現(xiàn)聊天機器人功能
  • Python QQBot庫的QQ聊天機器人
  • 使用python接入微信聊天機器人
  • python微信聊天機器人改進版(定時或觸發(fā)抓取天氣預(yù)報、勵志語錄等,向好友推送)

標(biāo)簽:定西 酒泉 江蘇 龍巖 寧夏 商丘 金融催收 云南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Django實現(xiàn)聊天機器人》,本文關(guān)鍵詞  Django,實現(xiàn),聊天,機器人,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Django實現(xiàn)聊天機器人》相關(guān)的同類信息!
  • 本頁收集關(guān)于Django實現(xiàn)聊天機器人的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    二区三区中文字幕| 国产精品色呦| 国产精品麻豆一区二区三区| 97视频精彩视频在线观看| 国产精品白丝jk白祙| 丁香六月激情综合| 色小子综合网| 亚洲an天堂an在线观看| 久久久天堂av| 亚洲男人天堂2020| 国产欧美一区二区三区国产幕精品| jizz国产在线观看| 欧美一区二区.| 成人公开免费视频| 法国空姐在线观看免费| 成人免费视频a| 中文字幕一区二区久久人妻| 国产一级特黄a大片免费| 欧美偷拍视频| 日本一欧美一欧美一亚洲视频| 国产 日韩 欧美| 欧美精品自拍偷拍| 成人在线观看黄色| 欧美日韩成人黄色| 欧美成人r级一区二区三区| 精品成人av一区二区在线播放| 视频区 图片区 小说区| 国产精品后入内射日本在线观看| 中文字幕精品一区二区精品绿巨人| 婷婷综合在线视频| 色噜噜狠狠成人中文综合| 亚洲欧美国产一本综合首页| 久久免费在线观看| 在线观看wwwxxxx| 91精品国产91热久久久做人人| 亚洲狠狠爱一区二区三区| 欧美激情在线一区二区| 亚洲天堂av免费在线观看| 538在线观看| 亚洲男人天堂久| y4480在线8影院| 黄网在线观看视频| 日本久久久久久久久| 欧美被日视频| 国产特级黄色片| 欧美成人国产精品一区二区| 亚洲xxxx3d动漫| 欧美性生交大片| 日本天堂网在线观看| 日韩五码在线观看| 8x拔播拔播x8国产精品| 网爆门在线观看| 中文字幕网在线| caopor在线视频| 欧美午夜在线观看| 国产伦精品一区二区三区妓女下载| 国产精品一区在线观看乱码| 日韩亚洲视频在线观看| 成年人在线视频免费观看| 欧美日韩在线视频免费| 一起草最新网址| 亚洲国产精品久久不卡毛片| 日本电影亚洲天堂| 国产福利免费在线观看| 一本久久a久久精品vr综合| 久久久综合激的五月天| 日韩精品在线视频免费观看| 四虎影视18库在线影院| 亚洲精品免费视频| 最新二区三区av| 成人网18免费看| 亚洲精品1区2区| 国产精品3区| 成人国产亚洲精品a区天堂华泰| 国产一区二区三区蝌蚪| 性xxxxxxxxx18欧美| 成人免费淫片aa视频免费| 一级aaa毛片| 欧美精品偷拍| 国产又粗又硬又长又爽| 动漫成人在线观看| 女王人厕视频2ⅴk| yellow字幕网在线| 日韩中文字幕在线免费观看| 久久国产乱子精品免费女| 亚洲a在线观看| 色网站免费在线观看| 在线播放中文字幕一区| 国产剧情一区在线| 欧美成人r级一区二区三区| 国产又粗又猛又爽又黄的| 中文字幕中文在线不卡住| 国产精品二区一区二区aⅴ| 狠狠色狠狠色综合婷婷tag| 男生和女生一起差差差视频| 日本高清视频精品| 国产a一区二区| 中文字幕伦理免费在线视频| 9色porny自拍视频一区二区| 黄网站app在线观看| 亚洲精品天堂成人片av在线播放| 天天干天天av| 久播影院第一理论片| 美女裸体自慰在线观看| 国产最顶级的黄色片在线免费观看| 国产精品国产成人国产三级| 香蕉久久久久久久av网站| 动漫精品一区二区| 国产亚洲精品久久久网站好莱| 蜜桃精品视频在线| 国产欧美一区二区在线| 亚洲人成人无码网www国产| 日韩一级毛片| 亚洲视频高清| 区日韩二区欧美三区| av在线播放一区二区| 国产精品美女视频| 久久香蕉网站| 日韩一级片中文字幕| 亚洲成人xxx| 久久在线播放| 涩涩视频在线免费看| 中文成人激情娱乐网| 2021中文字幕一区亚洲| 91ph在线| 手机在线免费看毛片| 色999日韩欧美国产| 在线黄色的网站| 麻豆精品国产传媒av| 免费麻豆国产一区二区三区四区| 手机免费观看av| 伊人久久一区二区三区| 狠狠色综合日日| 久久久久亚洲av无码专区首jn| 美女被羞羞网站| 欧美高清免费| 欧美极品videos大乳护士| 八戒八戒神马在线电影| 综合激情网...| 亚洲视频一区二区在线| 成年人在线观看视频| 国产精品久久久久一区二区| 亚洲综合视频网站| www.久久爱.com| 性欧美freesex顶级少妇| 精品久久国产老人久久综合| 成人精品一区二区三区| av日韩久久| 男女爱爱视频免费| 国产精品视频自在线| 免费无码毛片一区二三区| 亚洲性视频网站| 欧美三日本三级三级在线播放| 精品国产伦理网| 欧美一级视频免费在线观看| 欧美另类videos粗暴黑人| 国产日韩欧美一区二区三区乱码| www欧美日韩| 在线播放日韩精品| 久久99国产精品久久99大师| 不卡一区二区三区四区| 亚洲美女15p| 国产精品视频在线看| 久草精品在线观看| 日韩精品人妻中文字幕| 亚洲欧美国产一区二区| 国内精品久久99人妻无码| 久草在线资源视频| 日韩精品高清不卡| 成人一区二区三区仙踪林| 国产精品国产精品国产专区不卡| 日韩av高清在线观看| 成品网站w灬+源码1| 黄页视频在线观看| 欧美精品国产一区二区| 亚洲精品福利视频网站| 在线激情小视频| 国产精品videosex极品| 狠狠爱在线视频一区| 91在线超碰| 男女男精品视频站| 久久国产精品露脸对白| 国产精品久久久久久9999| 97在线资源站| 亚洲熟妇av日韩熟妇在线| 亚洲美女在线看| 亚洲精品成人天堂一二三| 一区二区久久精品66国产精品| 蜜桃色永久入口| 欧美日韩一二三| 成人一区在线观看| 麻豆传媒一区| 久热99视频在线观看| 国产欧美精品日韩精品| 挪威xxxx性hd极品| 欧美日韩一区二区在线观看| 国产精品天干天干在观线| 黄色18在线观看| 91在线精品秘密一区二区| 国产精品免费人成网站酒店| 99热精品在线观看| 一区二区日韩在线观看| 成年人在线视频| 午夜精品亚洲一区二区三区嫩草| 91免费国产视频网站| 在线视频你懂得一区二区三区| 亚洲欧洲日韩综合| 国产欧美久久一区二区三区| 97夜夜澡人人双人人人喊| 麻豆精品在线| 亚洲成av人影院| 高清在线一区| 国产精品麻豆入口| 欧美性猛交xxx高清大费中文| 午夜精品免费在线| 欧美性xxxx极品hd欧美| 亚洲专区一二三| 亚洲日本网址| 亚洲综合色区另类av| 久久视频在线播放| 中文字幕在线观看你懂的| 精品一区二区三区不卡| 68精品久久久久久欧美| 91精品国产九九九久久久亚洲| 成人看片黄a免费看视频| 亚洲精品国产成人影院| 91精品久久久久久综合乱菊| 色偷偷www8888| 性一爱一乱一交一视频| 四虎影视1304t| 九九热视频精品在线观看| 国产精品高清网站| 中文字幕一区二区在线播放| 国产精品大陆在线观看| 国产欧美精品久久久| 国产麻豆一区二区三区精品视频| 欧美激情一区二区三区p站| 逼特逼视频在线| 欧美 日韩 中文字幕| 国产麻豆一级片| 国产亚洲成av人片在线观黄桃| 360天大佬第二季在线观看| 喜爱夜蒲2在线| 欧美理论片在线| 午夜欧美视频在线观看| 久久久久久久久久一区二区| 中文字幕一区二区久久人妻网站| 国产一区二区三区电影在线观看| 好爽好深好紧好大| 亚洲小说区图片| 中文字幕成人乱码在线电影| 欧美视频一区二| 亚洲色图另类图片| 九色综合日本| 热re99久久精品国99热蜜月| 欧美人体一区二区三区| 亚洲午夜久久久久久久| 国产福利图片| jizz日本免费| 黄页网站免费在线观看| 日韩免费在线观看av| 欧美精品一区二区三区蜜桃视频| 亚洲免费在线观看视频| 黄视频免费在线看| 九色porny丨国产首页在线| 婷婷丁香久久五月婷婷| 色婷婷亚洲一区二区三区| 91嫩草国产线观看亚洲一区二区| 久久亚洲捆绑美女| 2018中文字幕第一页| 天堂中文在线www| 国产精品成人国产乱一区| 国产人妻精品一区二区三区不卡| 黄色一级片免费在线观看| 天堂国产一区二区三区| 999精品视频一区二区三区| 麻豆久久久久久| frxxee中国xxx麻豆hd| 国产美女久久精品香蕉69| 亚洲人av在线| 97精品伊人久久久大香线蕉| 久久久国内精品| 国产精品视频福利一区二区| 新版的欧美在线视频| 日韩国产一级片| 天天艹天天操| 污视频在线看操| 久久大胆人体视频| 国产亚洲精品拍拍拍拍拍| 天堂网www在线中文天堂| 成人av.网址在线网站| 老熟妇精品一区二区三区| 国产女人高潮的av毛片| 国产精品亲子伦对白| 天堂网一区二区| 国产精品视频在线免费观看| 免费裸体视频网站| 99riav1国产精品视频| 美腿丝袜亚洲三区| 少妇高清精品毛片在线视频| 一区二区三区影院| 欧美日韩中文字幕综合视频| 日韩人体视频| 91女主播在线观看| 色婷婷久久久| 日韩在线视频一区二区三区| 欧美一区二区三区网站| 日本精品600av| 久久精品亚洲精品国产欧美kt∨| 亚洲成人动漫av| 99一区二区| 日本aa在线观看| 久久精品99国产国产精| bt天堂新版中文在线地址| 亚洲精品aⅴ| 国产老熟妇精品观看| 51社区在线成人免费视频| 在线电影中文日韩| 欧美黑人粗大| 婷婷激情四射网| 91高跟黑色丝袜呻吟在线观看| 青青草一区二区三区| 国产原创精品在线| 国产激情无码一区二区三区| www国产精品视频| 欧美成人一区二区三区四区| 欧美成人福利在线观看| 成人手机在线|