婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Python3+PyCharm+Django+Django REST framework配置與簡(jiǎn)單開(kāi)發(fā)教程

Python3+PyCharm+Django+Django REST framework配置與簡(jiǎn)單開(kāi)發(fā)教程

熱門標(biāo)簽:鎮(zhèn)江人工外呼系統(tǒng)供應(yīng)商 騰訊地圖標(biāo)注有什么版本 千呼ai電話機(jī)器人免費(fèi) 申請(qǐng)辦個(gè)400電話號(hào)碼 400電話辦理費(fèi)用收費(fèi) 高德地圖標(biāo)注字母 外呼系統(tǒng)前面有錄音播放嗎 深圳網(wǎng)絡(luò)外呼系統(tǒng)代理商 柳州正規(guī)電銷機(jī)器人收費(fèi)

一、說(shuō)明

自己一是想跟上潮流二是習(xí)慣于直接干三是沒(méi)有人可以請(qǐng)教,由于這三點(diǎn)經(jīng)常搞得要死要活。之前只簡(jiǎn)單看過(guò)沒(méi)寫過(guò)Diango,沒(méi)看過(guò)Django REST framework,今天一步到位直接上又撞上了南墻。在此記一下以備忘,也希望對(duì)后來(lái)者能有所幫助。本文相當(dāng)于Django REST framework官方文檔的重新實(shí)現(xiàn)。

1.1 Django是什么

Django是當(dāng)下流行的一個(gè)python語(yǔ)言的web框架,類似于java的struts2,(如果struts2太舊不懂那也可以理解為spring boot)。

1.2 Django REST framework是什么

Django類似于struts2,也就是說(shuō)其是mvc模式的,也就是說(shuō)其v是前后端強(qiáng)耦合的,但現(xiàn)在都講REST。

Django REST framework就是Django的REST化庫(kù),用于實(shí)現(xiàn)Django的REST化。

二、開(kāi)發(fā)環(huán)境搭建

2.1 安裝PyCharm+conda

參見(jiàn):https://www.jb51.net/article/205782.htm

2.2 在pycharm中新建項(xiàng)目

 

2.3 安裝Django和Django REST framework

依次點(diǎn)開(kāi)pycharm----菜單----file----settings----project----project interpreter,安裝django、djangorestframework、pygments、pytest四個(gè)包

djangorestframework在conda-forge源中,如果找不到djangorestframework那應(yīng)該是沒(méi)添加conda-forge源的原因(中科大:https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/)

或者通過(guò)系統(tǒng)菜單開(kāi)啟“Anaconda Prompt”用pip安裝,命令如下

conda activate DjangoTest

pip install django
pip install djangorestframework
pip install pygments
pip install pytest

2.4 創(chuàng)建真正的Django項(xiàng)目

在前面中我們已經(jīng)創(chuàng)建了名稱為DjangoTest的項(xiàng)目,但要注意只是我們把名字命名為DjangoTest而已改項(xiàng)目到現(xiàn)在為止其實(shí)與Django無(wú)關(guān)。

Django項(xiàng)目需要通過(guò)django-admin命令來(lái)創(chuàng)建;所以我們要到項(xiàng)目所在文件夾下將現(xiàn)有DjangoTest文件夾刪掉,然后用django-admin命令來(lái)重新創(chuàng)建DjangoTest。

(前邊創(chuàng)建的DjangoTest的意義,是更多是為了創(chuàng)建DjangoTest虛擬環(huán)境。雖然有點(diǎn)繞,但這是我針對(duì)Scrapy和Django這種雞和蛋問(wèn)題能想到的最好辦法)

而django-admin命令的位置,我們可以借助conda env list來(lái)查看DjangoTest虛擬環(huán)境所在的目錄,然后加上\Scripts\django-admin.exe即是其位置。比如我的操作如下:

cd F:\PycharmProjects
F:
rmdir /s /q DjangoTest
conda env list
D:\Language\Miniconda3\envs\DjangoTest\Scripts\django-admin.exe startproject DjangoTest

創(chuàng)建完成后目錄結(jié)構(gòu)如下:

 2.5 設(shè)置運(yùn)行環(huán)境

django項(xiàng)目需要通過(guò)python manage.py runserver形式運(yùn)行,我們也需要配置成該形式。

依次點(diǎn)擊菜單----Run----Edit Configurations----左上角+號(hào)----Python,添加運(yùn)行環(huán)境

Name----環(huán)境名稱,自己隨便填

Script path----manage.py所在的路徑,改成自己的

Parameters----runserver,ip和端口如果需要直接追加在后邊即可

一定要注意,后續(xù)不要隨便在一個(gè)頁(yè)面就右鍵run/debug,而是不管修改什么文件在什么位置都要run/debug上邊這個(gè)環(huán)境,不然運(yùn)行不起來(lái)。(一直報(bào)錯(cuò)django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.)

2.6 將Django REST framework集成到Django

上邊我們創(chuàng)建了Django項(xiàng)目,至于Django REST framework只是安裝并沒(méi)有開(kāi)始操作,下邊我們開(kāi)始使用Django REST framework對(duì)上邊的Django項(xiàng)目進(jìn)行REST化改造。

一般而言我們不直接大幅修改Django項(xiàng)目的文件,而是新建一個(gè)APP實(shí)現(xiàn)REST,然后原來(lái)的Django項(xiàng)目文件只寫一些包含命令即可。所謂APP可以理解為子文件夾或者一個(gè)新線程。

為了更好地證明我們的程序是能很好運(yùn)行的,我這里會(huì)改用和官方例子不一樣的名稱包括app名稱model名稱等;并盡可能說(shuō)明每個(gè)操作本質(zhì)是在做什么。 

2.6.1 注冊(cè)drest和Django REST framework

首先,進(jìn)入到manage.py所在目錄新建一個(gè)app(注意打開(kāi)的cmd中的python和pycharm中的python同為python3不然運(yùn)行就報(bào)錯(cuò)了,我這里直接在前邊的Anaconda Prompt中運(yùn)行):

python manage.py startapp drest

向Django項(xiàng)目注冊(cè)drest,由于Django REST framework其實(shí)也以app形式注入所以也一同注冊(cè)。編緝DjangoTest/settings.py找到INSTALLED_APPS追加以下內(nèi)容:

'rest_framework',
'drest.apps.DrestConfig',

 2.6.2 路由關(guān)聯(lián)調(diào)整等

在drest目錄下新建urls.py(內(nèi)容先不寫),然后在DjangoTest/usrls.py中包含它;即DjangoTest/usrls.py修改如下:

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include

urlpatterns = [
  path('admin/', admin.site.urls),
  url(r'^', include('drest.urls')),
]

另外我們?cè)僭赿rest創(chuàng)建一個(gè)序列化文件serializers.py(內(nèi)容先不寫)用于后續(xù)序列化。到此我們的環(huán)境算搭建好了,項(xiàng)目目錄結(jié)構(gòu)如下:

三、開(kāi)發(fā)示例

前邊我們已搭好了環(huán)境,創(chuàng)建了一個(gè)app----drest,這里我們即在drest上進(jìn)行開(kāi)發(fā)。

3.1 創(chuàng)建model

這里的model不是mvc中的m,而是orm中的表對(duì)應(yīng)的類,稍后數(shù)據(jù)庫(kù)的表就是根據(jù)這個(gè)類來(lái)建立的。

編緝drest/model.py,寫入以下內(nèi)容:

from django.db import models

# Create your models here.
class Test(models.Model):
  # 這些在創(chuàng)建數(shù)據(jù)表時(shí)是表字段,括號(hào)內(nèi)為字段對(duì)應(yīng)屬性
  # 不過(guò)注意default屬性,是說(shuō)在實(shí)例化這個(gè)類時(shí)該字段默認(rèn)是這個(gè)值,創(chuàng)建數(shù)據(jù)表時(shí)并不會(huì)當(dāng)作一行括入數(shù)據(jù)表
  created = models.DateTimeField(auto_now_add=True)
  username = models.CharField(max_length=100, default='ls', )
  password = models.CharField(max_length=100, default='toor', )

  class Meta:
    # 這個(gè)表示數(shù)據(jù)表的內(nèi)容按創(chuàng)建時(shí)間排序
    ordering = ('created',)

3.2 創(chuàng)建model對(duì)應(yīng)序例化類

編寫drest/serializers.py寫入以下內(nèi)容:

from rest_framework import serializers
from drest.models import Test

class TestSerializer(serializers.ModelSerializer):
  class Meta:
    # 此處指明本序列化對(duì)應(yīng)的model
    model = Test
    # 此處指明從model對(duì)應(yīng)數(shù)據(jù)表中讀出哪些字段
    # id字段我們?cè)趍odel中并沒(méi)指明應(yīng)該是框架自己創(chuàng)建的
    # 另外我們還創(chuàng)建了created字段,但這里我們不加讀取他,當(dāng)然你要讀取加上即可
    fields = ('id', 'username', 'password')

3.3 設(shè)定路由

編緝drest/urls.py,寫入以下內(nèi)容:

from django.conf.urls import url
from drest import views

urlpatterns = [
  url(r'^test/$', views.test),
]

3.4 創(chuàng)建視圖

在REST中視圖已經(jīng)不是mvc中的html與后端代碼混淆的那種.jsp或.aspx頁(yè)面了,所指的是生成并返回json/xml結(jié)果的東西(反而更像mvc中的m)。

在路由中我們?cè)O(shè)定鏈接test,指向test視圖;我們這里來(lái)實(shí)現(xiàn)test視圖,該視圖使用3.2中的序列化類讀取3.1中對(duì)應(yīng)的數(shù)據(jù)表的所有內(nèi)容實(shí)現(xiàn)序列化并返回。

from django.http import JsonResponse
from rest_framework.parsers import JSONParser
from drest.serializers import Test
from drest.serializers import TestSerializer

def test(request):
  """
  List all code snippets, or create a new snippet.
  """
  if request.method == 'GET':# 這里應(yīng)該是model對(duì)應(yīng)的所有字段
    test_obj = Test.objects.all()
    # 序列化
    serializer = TestSerializer(test_obj, many=True)
    # 返回
    return JsonResponse(serializer.data, safe=False)

  # 此框架想實(shí)現(xiàn)原始REST的思想,如果是post就保存到數(shù)據(jù)庫(kù),這里暫且保留雖然我覺(jué)得不實(shí)用
  elif request.method == 'POST':
    data = JSONParser().parse(request)
    serializer = TestSerializer(data=data)
    if serializer.is_valid():
      serializer.save()
      return JsonResponse(serializer.data, status=201)
    return JsonResponse(serializer.errors, status=400)

在沒(méi)有if代碼對(duì)get/post等方法都進(jìn)行同樣的響應(yīng),如果要區(qū)分那就在在如if request.method == 'POST':分支內(nèi)編寫響應(yīng)代碼即可。為方便post測(cè)試附上requests和curl post提交的形式。

requests post提交json:

import requests

url = "http://127.0.0.1:8000/test1/"
data = {"username":"ls", "password":"toor"}
requests.post(url,json=data)

curl post提交json:

curl -H "Content-Type:application/json" -X POST --data '{"username": "ls","password":"toor"}' http://127.0.0.1:8000/test1/

3.5 創(chuàng)建model對(duì)應(yīng)數(shù)據(jù)表

我們?cè)?.1中就建好了model,在官方文檔中都是建好model就建對(duì)應(yīng)數(shù)據(jù)表的,但是由于我對(duì)實(shí)現(xiàn)步驟做了調(diào)整如果在3.1中就建表,會(huì)因程序有錯(cuò)誤而創(chuàng)建失敗,所以我們只能到這里才創(chuàng)建類據(jù)表。

指示在數(shù)據(jù)庫(kù)中創(chuàng)建model對(duì)應(yīng)的表,進(jìn)入到manage.py目錄執(zhí)行以下命令:

python manage.py makemigrations drest
python manage.py migrate

執(zhí)行完成后在manage.py同級(jí)目錄下可以看到一個(gè)db.sqlite3文件,該文件是一個(gè)sqlite3數(shù)據(jù)庫(kù)。

使用SQLiteStudio等工具打開(kāi),可以看到有一個(gè)dres_test的表其字段“created”、“username”、“password”正是我們?cè)趍odel中配置好的。

3.6 向drest_test表插入數(shù)據(jù)

我們一直說(shuō)TestSerializer的作用是讀取drest_test表的所有內(nèi)容并序列化,在上一步中我們創(chuàng)建好了drest_test;但是我們?cè)趍odel的注釋中也說(shuō)過(guò)創(chuàng)建數(shù)據(jù)表時(shí)不會(huì)向表中插入數(shù)據(jù),也就是說(shuō)此時(shí)drest_test表雖創(chuàng)建好了但其是一個(gè)空表是沒(méi)數(shù)據(jù)的,此時(shí)如果我們運(yùn)行程序并訪問(wèn)test鏈接那返回是空值。所以我們要向drest_test表中插入數(shù)據(jù)。

進(jìn)入到manage.py目錄執(zhí)行以下命令啟動(dòng)shell:

python manage.py shell

為了更好地說(shuō)明model中default的作用我們插入兩條數(shù)據(jù):

from drest.models import Test
from drest.serializers import TestSerializer
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser

test = Test()
test.save()
test = Test(username='root')
test.save()

此時(shí)查看drest_test表的內(nèi)容,如下所示正是我們插入的兩條數(shù)據(jù):

3.7 啟動(dòng)程序并訪問(wèn)

我們前面說(shuō)過(guò)運(yùn)行django項(xiàng)目run的一定要是我們2.5中設(shè)置的運(yùn)行環(huán)境,現(xiàn)在雖加項(xiàng)目進(jìn)行了如些復(fù)雜的操作但項(xiàng)目還是django項(xiàng)目還是要運(yùn)行那個(gè)環(huán)境(名為django)。

pycharm切換到manage.py----在其上右鍵----選擇Run ‘django',程序成功運(yùn)行如下:

 我們看到監(jiān)聽(tīng)地址為http://127.0.0.1:8000/,而我們?cè)O(shè)置的路由是test

打開(kāi)瀏覽器訪問(wèn)http://127.0.0.1:8000/test,結(jié)果如下圖,返回結(jié)果與預(yù)期完全一致: 

四、更直接的restful方法

上一大節(jié)的示例依據(jù)官方示例整理而成,整個(gè)流程雖然還算清楚,但給人一種復(fù)雜感。

比如為什么一定要我創(chuàng)建model、為什么一定要我創(chuàng)建model序列化類、為什么一定要?jiǎng)?chuàng)建數(shù)據(jù)表、為什么一定要向數(shù)據(jù)表中插入數(shù)據(jù)----總而言之,為什么一定要涉及數(shù)據(jù)庫(kù)?

并非所有請(qǐng)求都要涉及數(shù)據(jù)庫(kù)的,或者我就只想一個(gè)請(qǐng)求過(guò)來(lái)然后直接簡(jiǎn)單地返回隨便一個(gè)數(shù),那該如何寫呢。以test1請(qǐng)求為例。

4.1 設(shè)定路由

編緝drest/urls.py,寫入以下內(nèi)容:

from django.conf.urls import url
from drest import views

urlpatterns = [
  url(r'^test1/$', views.test1),
]

4.2 創(chuàng)建視圖

編緝drest/views.py追加test1方法:

def test1(request):
  # 要獲取客戶端提交的參數(shù),可通過(guò)request.GET["param_name"]或request.POST["param_name"]獲取,param_name是要獲取的參數(shù)名
  # 但要另外注意對(duì)post提交django默認(rèn)是有csrf token校驗(yàn)的,要注意怎么處理好,最簡(jiǎn)單的方法是到setting.py中將'django.middleware.csrf.CsrfViewMiddleware'項(xiàng)注釋掉
  # username = request.GET["username"]
  # username = request.POST["username"]
  # 如果前端通過(guò)json格式提交,那么需要使用以下方式獲取參數(shù)
  # data = JSONParser().parse(request)
  # username = data["username"]
  # Django執(zhí)行sql語(yǔ)句,第一種方法是依賴model的model.objects.get()等方法
  # 獲取第一條記錄
  # Test.objects.get(username="ls")
  # 獲取記錄集合
  # Test.objects.filter(username="ls")
  # Django執(zhí)行sql語(yǔ)句,第二種方法是直接執(zhí)行sql語(yǔ)句
  # cursor = connection.cursor()
  # cursor.execute('select * from drest_test')
  # 獲取第一條記錄
  # row = cursor.fetchone()
  # 遍歷數(shù)據(jù)表所有記錄
  # for row in cursor.fetchall():
  #   print(f"{row}")
  dict1 = {}
  dict1["id"] = 1
  dict1["result"] = "success"
  # JsonResponse()最正規(guī)的就是給他傳一個(gè)字典
  # 上一節(jié)傳的serializer.data是一個(gè)列表反而不那么正規(guī),傳非字典參數(shù)要設(shè)置safe=False
  return JsonResponse(dict1)

4.3 啟動(dòng)程序并訪問(wèn)

和3.7一樣運(yùn)行manage.py,然后訪問(wèn)http://127.0.0.1:8000/test1/,結(jié)果如下圖。

五、使用總結(jié)

在第三大節(jié)上,網(wǎng)上現(xiàn)有的很多教和感覺(jué)就是自己把英文版翻譯成中文,但又不能很好地解框架到底在做什么,尤其是model其實(shí)是用來(lái)創(chuàng)建數(shù)據(jù)表和序列化類本質(zhì)是讀取數(shù)據(jù)表的內(nèi)容并返回這兩點(diǎn),導(dǎo)致翻譯得似是而非反而讓人更難理解框架的本質(zhì)。

如第四大節(jié)所言,我們寫程序工作總不會(huì)都是讀取數(shù)據(jù)庫(kù)表然后返回。增刪改查尤其是跨數(shù)據(jù)表的增刪改查還是得在dao層中另行實(shí)現(xiàn),作為竄聯(lián)的邏輯代碼則在view上實(shí)現(xiàn);view調(diào)用dao,dao調(diào)用model。

更多關(guān)于 Django framework 相關(guān)教程請(qǐng)點(diǎn)擊下面的相關(guān)鏈接

您可能感興趣的文章:
  • Django restframework 框架認(rèn)證、權(quán)限、限流用法示例
  • DjangoRestFramework 使用 simpleJWT 登陸認(rèn)證完整記錄
  • Django rest framework如何自定義用戶表
  • 深度解析Django REST Framework 批量操作
  • Django REST Framework 分頁(yè)(Pagination)詳解
  • Django restful framework生成API文檔過(guò)程詳解
  • 自定義Django_rest_framework_jwt登陸錯(cuò)誤返回的解決
  • django rest framework使用django-filter用法
  • django restframework serializer 增加自定義字段操作
  • Django REST framework 限流功能的使用

標(biāo)簽:海南 烏蘭察布 烏蘭察布 合肥 哈爾濱 大慶 平頂山 郴州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python3+PyCharm+Django+Django REST framework配置與簡(jiǎn)單開(kāi)發(fā)教程》,本文關(guān)鍵詞  Python3+PyCharm+Django+Django,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python3+PyCharm+Django+Django REST framework配置與簡(jiǎn)單開(kāi)發(fā)教程》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Python3+PyCharm+Django+Django REST framework配置與簡(jiǎn)單開(kāi)發(fā)教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩专区中文字幕一区二区| 亚洲午夜精品在线| www.激情成人| 国产成人av电影免费在线观看| 国产91在线看| 国产午夜精品一区二区三区视频 | 国产女主播一区| 精品一区在线看| 亚洲免费视频成人| 日韩一区二区免费在线观看| 欧美不卡一区二区三区四区| 精品国产伦一区二区三区免费| 激情图区综合网| 国产精品人妖ts系列视频| 91极品视觉盛宴| 欧美在线观看一区二区| 日本不卡一二三区黄网| 国产麻豆精品95视频| 精品国产成人系列| 一本大道久久a久久精二百| 欧美另类videos死尸| 91精品国产一区二区三区香蕉| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美精品在线一区二区三区| 欧美妇女性影城| 日韩欧美国产小视频| 中文字幕在线观看一区| 另类欧美日韩国产在线| 91一区二区三区在线播放| 日韩欧美中文一区二区| 亚洲免费在线视频| 蜜桃一区二区三区在线观看| 日本高清不卡视频| 成人黄色在线看| 久久久午夜精品理论片中文字幕| 亚洲黄色av一区| 国产成人av一区二区三区在线观看| 亚洲自拍与偷拍| 国产日产亚洲精品系列| 国产精品久久久久一区二区三区 | 裸体在线国模精品偷拍| 久草精品在线观看| av亚洲精华国产精华| 日本精品免费观看高清观看| 精品一区二区三区日韩| 国产高清久久久| 91麻豆免费看片| 欧美二区在线观看| 国产欧美一区二区精品久导航| 国产成人免费在线观看| 91麻豆免费观看| 日韩一区二区三区精品视频| 国产目拍亚洲精品99久久精品| 亚洲精品日日夜夜| 九九九精品视频| 91免费国产视频网站| 8v天堂国产在线一区二区| 久久综合九色综合欧美就去吻| 亚洲欧洲精品一区二区三区| 亚洲蜜桃精久久久久久久| 日本不卡一区二区| 成人av在线电影| 日韩一区二区三区视频在线| 成人欧美一区二区三区1314| 久久国产福利国产秒拍| 国产酒店精品激情| 欧美亚洲一区三区| 日本一区二区三区在线观看| 亚洲福利一二三区| 风间由美性色一区二区三区| 欧美日韩国产bt| 久久久久久麻豆| 亚洲三级在线看| 日韩精品欧美成人高清一区二区| 久草这里只有精品视频| 91在线码无精品| 欧美一卡二卡三卡| 亚洲国产激情av| 亚洲一区二区高清| 国产在线精品国自产拍免费| 91小视频免费观看| 欧美一二三区精品| 亚洲女人的天堂| 亚洲一区二区三区自拍| 国产传媒欧美日韩成人| 欧美在线不卡视频| 国产欧美日韩在线| 日韩和欧美一区二区三区| 成人免费视频视频在线观看免费 | 欧美成人video| 极品美女销魂一区二区三区免费 | 波多野结衣中文字幕一区| 色婷婷精品大视频在线蜜桃视频| 国产盗摄女厕一区二区三区| 国产欧美日韩视频在线观看| 欧美三级电影精品| 国产综合成人久久大片91| 一区二区三区久久| 国产亚洲视频系列| 欧美日韩国产高清一区二区 | 裸体歌舞表演一区二区| 国产精品久久久久久久久久久免费看| 欧美日韩大陆在线| 久久99国产精品尤物| 亚洲永久免费av| 国产精品嫩草影院av蜜臀| zzijzzij亚洲日本少妇熟睡| 国产精品每日更新| 自拍偷在线精品自拍偷无码专区| 不卡的av电影| 激情欧美日韩一区二区| 亚洲夂夂婷婷色拍ww47| 婷婷成人综合网| 色狠狠av一区二区三区| 日日夜夜精品视频免费| 亚洲精品一区二区三区香蕉 | 色综合天天综合网国产成人综合天 | 欧美日韩成人综合在线一区二区| 夜夜精品浪潮av一区二区三区| 在线观看亚洲精品| 亚洲va中文字幕| 欧美精品在线视频| 午夜在线成人av| 欧美一级片在线| 国产成人精品免费网站| 亚洲日本在线看| 4438亚洲最大| 国产91清纯白嫩初高中在线观看 | 大白屁股一区二区视频| 一区二区欧美在线观看| 日韩欧美激情一区| 91尤物视频在线观看| 青青草伊人久久| 亚洲婷婷综合久久一本伊一区| 制服视频三区第一页精品| 成人精品一区二区三区四区| 丝袜诱惑亚洲看片| 亚洲日本丝袜连裤袜办公室| 精品日韩在线观看| 99精品视频在线播放观看| 美女在线观看视频一区二区| 亚洲免费看黄网站| 国产欧美日韩在线| 欧美一卡二卡在线| 在线观看网站黄不卡| 成人午夜免费视频| 久久疯狂做爰流白浆xx| 亚洲国产欧美在线人成| |精品福利一区二区三区| 久久久国产午夜精品| 日韩一二三区视频| 精品视频免费在线| 97精品国产露脸对白| 国产精品一二三| 国产呦萝稀缺另类资源| 蜜桃精品视频在线| 亚洲图片有声小说| 亚洲日穴在线视频| 日韩一区在线播放| 国产精品网曝门| 久久久久久97三级| www欧美成人18+| 精品久久久久久久一区二区蜜臀| 欧美一区二区三区性视频| 欧美一a一片一级一片| 99国产精品久久久久| 成人成人成人在线视频| 国产成人亚洲精品青草天美| 另类小说综合欧美亚洲| 日韩电影在线观看一区| 天堂资源在线中文精品| 亚洲国产aⅴ成人精品无吗| 亚洲老妇xxxxxx| 国产精品久久久久一区二区三区 | 欧美精品一二三四| 欧美三级视频在线播放| 91官网在线观看| 欧美三级中文字幕| 欧美精品在线一区二区三区| 欧美日韩日日夜夜| 7777精品伊人久久久大香线蕉经典版下载| 色噜噜狠狠色综合欧洲selulu| 成人免费视频一区| 色999日韩国产欧美一区二区| 欧美专区日韩专区| 欧美精品99久久久**| 91精品黄色片免费大全| 精品不卡在线视频| 国产日韩高清在线| 亚洲天堂精品视频| 亚洲国产成人精品视频| 5566中文字幕一区二区电影| 中文字幕一区在线| 国产麻豆一精品一av一免费 | 日韩影院精彩在线| 成人爽a毛片一区二区免费| 欧美一级国产精品| 亚洲午夜免费福利视频| 成人网页在线观看| 久久亚洲综合色一区二区三区 |