亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > Python > 正文

在Django框架中運(yùn)行Python應(yīng)用全攻略

2020-01-04 18:03:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這篇文章主要介紹了在Django框架中運(yùn)行Python應(yīng)用全攻略,在這之前必須搭建好簡(jiǎn)單的視圖和模版,接下來(lái)便是本文中所述的核心內(nèi)容應(yīng)用配置,需要的朋友可以參考下

我們來(lái)假定下面的這些概念、字段和關(guān)系:

一個(gè)作者有姓,有名及email地址。

出版商有名稱,地址,所在城市、省,國(guó)家,網(wǎng)站。

書籍有書名和出版日期。 它有一個(gè)或多個(gè)作者(和作者是多對(duì)多的關(guān)聯(lián)關(guān)系[many-to-many]), 只有一個(gè)出版商(和出版商是一對(duì)多的關(guān)聯(lián)關(guān)系[one-to-many],也被稱作外鍵[foreign key])

第一步是用Python代碼來(lái)描述它們。 打開由`` startapp`` 命令創(chuàng)建的models.py 并輸入下面的內(nèi)容:

 

 
  1. from django.db import models 
  2.  
  3. class Publisher(models.Model): 
  4. name = models.CharField(max_length=30) 
  5. address = models.CharField(max_length=50) 
  6. city = models.CharField(max_length=60) 
  7. state_province = models.CharField(max_length=30) 
  8. country = models.CharField(max_length=50) 
  9. website = models.URLField() 
  10.  
  11. class Author(models.Model): 
  12. first_name = models.CharField(max_length=30) 
  13. last_name = models.CharField(max_length=40) 
  14. email = models.EmailField() 
  15.  
  16. class Book(models.Model): 
  17. title = models.CharField(max_length=100) 
  18. authors = models.ManyToManyField(Author) 
  19. publisher = models.ForeignKey(Publisher) 
  20. publication_date = models.DateField() 

讓我們來(lái)快速講解一下這些代碼的含義。 首先要注意的事是每個(gè)數(shù)據(jù)模型都是 django.db.models.Model 的子類。它的父類 Model 包含了所有必要的和數(shù)據(jù)庫(kù)交互的方法,并提供了一個(gè)簡(jiǎn)潔漂亮的定義數(shù)據(jù)庫(kù)字段的語(yǔ)法。 信不信由你,這些就是我們需要編寫的通過(guò)Django存取基本數(shù)據(jù)的所有代碼。

每個(gè)模型相當(dāng)于單個(gè)數(shù)據(jù)庫(kù)表,每個(gè)屬性也是這個(gè)表中的一個(gè)字段。 屬性名就是字段名,它的類型(例如 CharField )相當(dāng)于數(shù)據(jù)庫(kù)的字段類型 (例如 varchar )。例如, Publisher 模塊等同于下面這張表(用PostgreSQL的 CREATE TABLE 語(yǔ)法描述):

 

 
  1. CREATE TABLE "books_publisher" ( 
  2. "id" serial NOT NULL PRIMARY KEY, 
  3. "name" varchar(30) NOT NULL, 
  4. "address" varchar(50) NOT NULL, 
  5. "city" varchar(60) NOT NULL, 
  6. "state_province" varchar(30) NOT NULL, 
  7. "country" varchar(50) NOT NULL, 
  8. "website" varchar(200) NOT NULL 
  9. ); 

事實(shí)上,正如過(guò)一會(huì)兒我們所要展示的,Django 可以自動(dòng)生成這些 CREATE TABLE 語(yǔ)句。

“每個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)一個(gè)類”這條規(guī)則的例外情況是多對(duì)多關(guān)系。 在我們的范例模型中, Book 有一個(gè) 多對(duì)多字段 叫做 authors 。 該字段表明一本書籍有一個(gè)或多個(gè)作者,但 Book 數(shù)據(jù)庫(kù)表卻并沒(méi)有 authors 字段。 相反,Django創(chuàng)建了一個(gè)額外的表(多對(duì)多連接表)來(lái)處理書籍和作者之間的映射關(guān)系。

請(qǐng)查看附錄 B 了解所有的字段類型和模型語(yǔ)法選項(xiàng)。

最后需要注意的是,我們并沒(méi)有顯式地為這些模型定義任何主鍵。 除非你單獨(dú)指明,否則Django會(huì)自動(dòng)為每個(gè)模型生成一個(gè)自增長(zhǎng)的整數(shù)主鍵字段每個(gè)Django模型都要求有單獨(dú)的主鍵。

模型安裝

完成這些代碼之后,現(xiàn)在讓我們來(lái)在數(shù)據(jù)庫(kù)中創(chuàng)建這些表。 要完成該項(xiàng)工作,第一步是在 Django 項(xiàng)目中 激活 這些模型。 將 books app 添加到配置文件的已安裝應(yīng)用列表中即可完成此步驟。

再次編輯 settings.py 文件, 找到 INSTALLED_APPS 設(shè)置。 INSTALLED_APPS 告訴 Django 項(xiàng)目哪些 app 處于激活狀態(tài)。 缺省情況下如下所示:

 

 
  1. INSTALLED_APPS = ( 
  2. 'django.contrib.auth'
  3. 'django.contrib.contenttypes'
  4. 'django.contrib.sessions'
  5. 'django.contrib.sites'

把這四個(gè)設(shè)置前面加#臨時(shí)注釋起來(lái)。 (這四個(gè)app是經(jīng)常使用到的,我們將在后續(xù)章節(jié)里討論如何使用它們)。同時(shí),注釋掉MIDDLEWARE_CLASSES的默認(rèn)設(shè)置條目,因?yàn)檫@些條目是依賴于剛才我們剛在INSTALLED_APPS注釋掉的apps。 然后,添加`` ‘mysite.books'`` 到`` INSTALLED_APPS`` 的末尾,此時(shí)設(shè)置的內(nèi)容看起來(lái)應(yīng)該是這樣的:

 

 
  1. MIDDLEWARE_CLASSES = ( 
  2. # 'django.middleware.common.CommonMiddleware', 
  3. # 'django.contrib.sessions.middleware.SessionMiddleware', 
  4. # 'django.contrib.auth.middleware.AuthenticationMiddleware', 
  5.  
  6. INSTALLED_APPS = ( 
  7. # 'django.contrib.auth', 
  8. # 'django.contrib.contenttypes', 
  9. # 'django.contrib.sessions', 
  10. # 'django.contrib.sites', 
  11. 'mysite.books'

(就像我們?cè)谏弦徽略O(shè)置TEMPLATE_DIRS所提到的逗號(hào),同樣在INSTALLED_APPS的末尾也需添加一個(gè)逗號(hào),因?yàn)檫@是個(gè)單元素的元組。 另外,本書的作者喜歡在 每一個(gè) tuple元素后面加一個(gè)逗號(hào),不管它是不是 只有一個(gè)元素。 這是為了避免忘了加逗號(hào),而且也沒(méi)什么壞處。)

'mysite.books'指示我們正在編寫的books app。 INSTALLED_APPS 中的每個(gè)app都使用 Python的路徑描述,包的路徑,用小數(shù)點(diǎn)“.”間隔。

現(xiàn)在我們可以創(chuàng)建數(shù)據(jù)庫(kù)表了。 首先,用下面的命令驗(yàn)證模型的有效性:

 

 
  1. python manage.py validate 

validate 命令檢查你的模型的語(yǔ)法和邏輯是否正確。 如果一切正常,你會(huì)看到 0 errors found 消息。如果出錯(cuò),請(qǐng)檢查你輸入的模型代碼。 錯(cuò)誤輸出會(huì)給出非常有用的錯(cuò)誤信息來(lái)幫助你修正你的模型。

一旦你覺(jué)得你的模型可能有問(wèn)題,運(yùn)行 python manage.py validate 。 它可以幫助你捕獲一些常見的模型定義錯(cuò)誤。

模型確認(rèn)沒(méi)問(wèn)題了,運(yùn)行下面的命令來(lái)生成 CREATE TABLE 語(yǔ)句(如果你使用的是Unix,那么可以啟用語(yǔ)法高亮):

 

 
  1. python manage.py sqlall books 

在這個(gè)命令行中, books 是app的名稱。 和你運(yùn)行 manage.py startapp 中的一樣。執(zhí)行之后,輸出如下:

 

 
  1. BEGIN; 
  2. CREATE TABLE "books_publisher" ( 
  3. "id" serial NOT NULL PRIMARY KEY, 
  4. "name" varchar(30) NOT NULL, 
  5. "address" varchar(50) NOT NULL, 
  6. "city" varchar(60) NOT NULL, 
  7. "state_province" varchar(30) NOT NULL, 
  8. "country" varchar(50) NOT NULL, 
  9. "website" varchar(200) NOT NULL 
  10. CREATE TABLE "books_author" ( 
  11. "id" serial NOT NULL PRIMARY KEY, 
  12. "first_name" varchar(30) NOT NULL, 
  13. "last_name" varchar(40) NOT NULL, 
  14. "email" varchar(75) NOT NULL 
  15. CREATE TABLE "books_book" ( 
  16. "id" serial NOT NULL PRIMARY KEY, 
  17. "title" varchar(100) NOT NULL, 
  18. "publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id") DEFERRABLE INITIALLY DEFERRED, 
  19. "publication_date" date NOT NULL 
  20. CREATE TABLE "books_book_authors" ( 
  21. "id" serial NOT NULL PRIMARY KEY, 
  22. "book_id" integer NOT NULL REFERENCES "books_book" ("id") DEFERRABLE INITIALLY DEFERRED, 
  23. "author_id" integer NOT NULL REFERENCES "books_author" ("id") DEFERRABLE INITIALLY DEFERRED, 
  24. UNIQUE ("book_id""author_id"
  25. CREATE INDEX "books_book_publisher_id" ON "books_book" ("publisher_id"); 
  26. COMMIT; 

注意:

自動(dòng)生成的表名是app名稱( books )和模型的小寫名稱 ( publisher , book , author )的組合。你可以參考附錄B重寫這個(gè)規(guī)則。

我們前面已經(jīng)提到,Django為每個(gè)表格自動(dòng)添加加了一個(gè) id 主鍵, 你可以重新設(shè)置它。

按約定,Django添加 "_id" 后綴到外鍵字段名。 你猜對(duì)了,這個(gè)同樣是可以自定義的。

外鍵是用 REFERENCES 語(yǔ)句明確定義的。

這些 CREATE TABLE 語(yǔ)句會(huì)根據(jù)你的數(shù)據(jù)庫(kù)而作調(diào)整,這樣象數(shù)據(jù)庫(kù)特定的一些字段例如:(MySQL),auto_increment(PostgreSQL),serial(SQLite),都會(huì)自動(dòng)生成。integer primary key 同樣的,字段名稱也是自動(dòng)處理(例如單引號(hào)還好是雙引號(hào))。 例子中的輸出是基于PostgreSQL語(yǔ)法的。

sqlall 命令并沒(méi)有在數(shù)據(jù)庫(kù)中真正創(chuàng)建數(shù)據(jù)表,只是把SQL語(yǔ)句段打印出來(lái),這樣你可以看到Django究竟會(huì)做些什么。 如果你想這么做的話,你可以把那些SQL語(yǔ)句復(fù)制到你的數(shù)據(jù)庫(kù)客戶端執(zhí)行,或者通過(guò)Unix管道直接進(jìn)行操作(例如,`` python manager.py sqlall books | psql mydb`` )。不過(guò),Django提供了一種更為簡(jiǎn)易的提交SQL語(yǔ)句至數(shù)據(jù)庫(kù)的方法: `` syncdb`` 命令

 

 
  1. python manage.py syncdb 

執(zhí)行這個(gè)命令后,將看到類似以下的內(nèi)容:

 

 
  1. Creating table books_publisher 
  2. Creating table books_author 
  3. Creating table books_book 
  4. Installing index for books.Book model 

syncdb 命令是同步你的模型到數(shù)據(jù)庫(kù)的一個(gè)簡(jiǎn)單方法。 它會(huì)根據(jù) INSTALLED_APPS 里設(shè)置的app來(lái)檢查數(shù)據(jù)庫(kù), 如果表不存在,它就會(huì)創(chuàng)建它。 需要注意的是, syncdb 并 不能將模型的修改或刪除同步到數(shù)據(jù)庫(kù);如果你修改或刪除了一個(gè)模型,并想把它提交到數(shù)據(jù)庫(kù),syncdb并不會(huì)做出任何處理。 (更多內(nèi)容請(qǐng)查看本章最后的“修改數(shù)據(jù)庫(kù)的架構(gòu)”一段。)

如果你再次運(yùn)行 python manage.py syncdb ,什么也沒(méi)發(fā)生,因?yàn)槟銢](méi)有添加新的模型或者 添加新的app。因此,運(yùn)行python manage.py syncdb總是安全的,因?yàn)樗粫?huì)重復(fù)執(zhí)行SQL語(yǔ)句。

如果你有興趣,花點(diǎn)時(shí)間用你的SQL客戶端登錄進(jìn)數(shù)據(jù)庫(kù)服務(wù)器看看剛才Django創(chuàng)建的數(shù)據(jù)表。 你可以手動(dòng)啟動(dòng)命令行客戶端(例如,執(zhí)行PostgreSQL的`` psql`` 命令),也可以執(zhí)行 `` python manage.py dbshell`` ,這個(gè)命令將依據(jù)`` DATABASE_SERVER`` 的里設(shè)置自動(dòng)檢測(cè)使用哪種命令行客戶端。 常言說(shuō),后來(lái)者居上。

基本數(shù)據(jù)訪問(wèn)

一旦你創(chuàng)建了模型,Django自動(dòng)為這些模型提供了高級(jí)的Python API。 運(yùn)行 python manage.py shell 并輸入下面的內(nèi)容試試看:

 

 
  1. >>> from books.models import Publisher 
  2. >>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue'
  3. ... city='Berkeley', state_province='CA', country='U.S.A.'
  4. ... website='http://www.apress.com/'
  5. >>> p1.save() 
  6. >>> p2 = Publisher(name="O'Reilly", address='10 Fawcett St.', 
  7. ... city='Cambridge', state_province='MA', country='U.S.A.'
  8. ... website='http://www.oreilly.com/'
  9. >>> p2.save() 
  10. >>> publisher_list = Publisher.objects.all() 
  11. >>> publisher_list 
  12. [<Publisher: Publisher object>, <Publisher: Publisher object>] 

這短短幾行代碼干了不少的事。 這里簡(jiǎn)單的說(shuō)一下:

首先,導(dǎo)入Publisher模型類, 通過(guò)這個(gè)類我們可以與包含 出版社 的數(shù)據(jù)表進(jìn)行交互。

接著,創(chuàng)建一個(gè)`` Publisher`` 類的實(shí)例并設(shè)置了字段`` name, address`` 等的值。

調(diào)用該對(duì)象的 save() 方法,將對(duì)象保存到數(shù)據(jù)庫(kù)中。 Django 會(huì)在后臺(tái)執(zhí)行一條 INSERT 語(yǔ)句。

最后,使用`` Publisher.objects`` 屬性從數(shù)據(jù)庫(kù)取出出版商的信息,這個(gè)屬性可以認(rèn)為是包含出版商的記錄集。 這個(gè)屬性有許多方法, 這里先介紹調(diào)用`` Publisher.objects.all()`` 方法獲取數(shù)據(jù)庫(kù)中`` Publisher`` 類的所有對(duì)象。這個(gè)操作的幕后,Django執(zhí)行了一條SQL `` SELECT`` 語(yǔ)句。

這里有一個(gè)值得注意的地方,在這個(gè)例子可能并未清晰地展示。 當(dāng)你使用Django modle API創(chuàng)建對(duì)象時(shí)Django并未將對(duì)象保存至數(shù)據(jù)庫(kù)內(nèi),除非你調(diào)用`` save()`` 方法:

 

 
  1. p1 = Publisher(...) 
  2. # At this point, p1 is not saved to the database yet! 
  3. p1.save() 
  4. # Now it is. 

如果需要一步完成對(duì)象的創(chuàng)建與存儲(chǔ)至數(shù)據(jù)庫(kù),就使用`` objects.create()`` 方法。 下面的例子與之前的例子等價(jià):

 

 
  1. >>> p1 = Publisher.objects.create(name='Apress'
  2. ... address='2855 Telegraph Avenue'
  3. ... city='Berkeley', state_province='CA', country='U.S.A.'
  4. ... website='http://www.apress.com/'
  5. >>> p2 = Publisher.objects.create(name="O'Reilly"
  6. ... address='10 Fawcett St.', city='Cambridge'
  7. ... state_province='MA', country='U.S.A.'
  8. ... website='http://www.oreilly.com/'
  9. >>> publisher_list = Publisher.objects.all() 
  10. >>> publisher_list 

當(dāng)然,你肯定想執(zhí)行更多的Django數(shù)據(jù)庫(kù)API試試看,不過(guò),還是讓我們先解決一點(diǎn)煩人的小問(wèn)題。

添加模塊的字符串表現(xiàn)

當(dāng)我們打印整個(gè)publisher列表時(shí),我們沒(méi)有得到想要的有用信息,無(wú)法把````對(duì)象區(qū)分開來(lái):

 

 
  1. System Message: WARNING/2 (<string>, line 872); backlink 
  2.  
  3. Inline literal start-string without end-string. 
  4.  
  5. System Message: WARNING/2 (<string>, line 872); backlink 
  6.  
  7. Inline literal start-string without end-string. 
  8.  
  9. [<Publisher: Publisher object>, <Publisher: Publisher object>] 

我們可以簡(jiǎn)單解決這個(gè)問(wèn)題,只需要為Publisher 對(duì)象添加一個(gè)方法 __unicode__() 。 __unicode__() 方法告訴Python如何將對(duì)象以u(píng)nicode的方式顯示出來(lái)。 為以上三個(gè)模型添加__unicode__()方法后,就可以看到效果了:

 

 
  1. from django.db import models 
  2.  
  3. class Publisher(models.Model): 
  4. name = models.CharField(max_length=30) 
  5. address = models.CharField(max_length=50) 
  6. city = models.CharField(max_length=60) 
  7. state_province = models.CharField(max_length=30) 
  8. country = models.CharField(max_length=50) 
  9. website = models.URLField() 
  10.  
  11. **def __unicode__(self):** 
  12. **return self.name** 
  13.  
  14. class Author(models.Model): 
  15. first_name = models.CharField(max_length=30) 
  16. last_name = models.CharField(max_length=40) 
  17. email = models.EmailField() 
  18.  
  19. **def __unicode__(self):** 
  20. **return u'%s %s' % (self.first_name, self.last_name)** 
  21.  
  22. class Book(models.Model): 
  23. title = models.CharField(max_length=100) 
  24. authors = models.ManyToManyField(Author) 
  25. publisher = models.ForeignKey(Publisher) 
  26. publication_date = models.DateField() 
  27.  
  28. **def __unicode__(self):** 
  29. **return self.title** 

就象你看到的一樣, __unicode__() 方法可以進(jìn)行任何處理來(lái)返回對(duì)一個(gè)對(duì)象的字符串表示。 Publisher和Book對(duì)象的__unicode__()方法簡(jiǎn)單地返回各自的名稱和標(biāo)題,Author對(duì)象的__unicode__()方法則稍微復(fù)雜一些,它將first_name和last_name字段值以空格連接后再返回。

對(duì)__unicode__()的唯一要求就是它要返回一個(gè)unicode對(duì)象 如果`` __unicode__()`` 方法未返回一個(gè)Unicode對(duì)象,而返回比如說(shuō)一個(gè)整型數(shù)字,那么Python將拋出一個(gè)`` TypeError`` 錯(cuò)誤,并提示:”coercing to Unicode: need string or buffer, int found” 。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
精品综合在线| 色先锋影音av| 日韩色级片先锋影音| 欧美精品中文| 激情小说网站亚洲综合网| 蜜臀aⅴ国产精品久久久国产老师| 国产综合免费视频| 在线最新版中文在线| 国产成人精品久久| 成人涩涩小片视频日本| 亚洲欧美校园春色| 欧美韩日一区二区三区| 久久精品国产一区二区三区免费看| 精品国产一区二区国模嫣然| 色8久久精品久久久久久蜜| 亚洲精品卡一卡二| 中文字幕一区二区三区人妻电影| 亚洲一线二线三线久久久| 少妇被狂c下部羞羞漫画| 欧美另类69精品久久久久9999| 秋霞国产午夜精品免费视频| 色999日韩欧美国产| 日韩在线中文视频| 蜜臀久久99精品久久久酒店新书| 99爱视频在线| 成人欧美一区二区三区在线湿哒哒| 久久国产电影| 欧美成年人视频网站欧美| 熟妇人妻无乱码中文字幕真矢织江| 北岛玲一区二区三区| 巨乳女教师的诱惑| 中文字幕三级电影| 九九热在线观看| 国产欧美啪啪| 天天靠夜夜靠| 国产黄色片中文字幕| 免费看黄裸体一级大秀欧美| 久久影视一区二区| 丰满人妻一区二区三区免费视频| av中文一区二区三区| 国产精品爽爽爽爽爽爽在线观看| 欧美xxxx做受欧美88bbw| 中文国产字幕在线观看| 欧美成人精品一区二区男人小说| 日韩美女视频一区二区在线观看| 久本草在线中文字幕亚洲欧美| 久久免费偷拍视频| 久久久成人av毛片免费观看| 先锋成人av| 懂色aⅴ精品一区二区三区蜜月| 色噜噜狠狠一区二区三区狼国成人| 波多野结衣一区二区三区免费视频| 欧美肥臀大乳一区二区免费视频| 成人短视频下载| 日韩国产中文字幕| 欧美日韩免费做爰视频| 亚洲大胆视频| 国产1区2区3区中文字幕| 成人免费毛片片v| 日韩三级电影网| 亚洲网站啪啪| 最近国产精品视频| jizz大全欧美jizzcom| 蜜桃视频污在线观看| 日本 片 成人 在线| 欧美三级电影一区二区三区| 一区二区三区四区欧美日韩| 婷婷精品视频| 天天色天天操天天射| 亚洲视频在线观看三级| 国产精品久久婷婷六月丁香| avtt久久| 亚洲激情欧美激情| 黄色大片中文字幕| 亚洲黄色av女优在线观看| 少妇特黄a一区二区三区| 国产精品免费在线视频| 特级西西444www大精品视频免费看| 国产成人精选| 国产一区不卡在线观看| 欧美人体大胆444www| 夜夜揉揉日日人人青青一国产精品| 欧美成年人视频网站欧美| 国产综合久久久久久鬼色| 麻豆传媒免费在线观看| 黄页在线观看视频| 日韩欧美国产一二三区| 免费观看黄色一级视频| 日本福利片在线| 一区二区三区影院| 深夜福利视频在线观看| 亚洲国产高清不卡| 亚洲日本视频| 免费黄网在线观看| 日韩精品视频免费专区在线播放| 韩日精品视频| 亚洲成年人在线| 欧美日韩高清丝袜| 欧美三级视频网站| 天堂网在线.www天堂在线| 成人性生交大片免费看午夜| 搡女人真爽免费午夜网站| 中文字幕一区二区不卡| 亚洲天堂国产视频| 四虎4545www精品视频| 午夜性爽视频男人的天堂| 精品国产一区二区三区久久狼5月| 亚洲一区二区视频在线播放| 欧美人成在线视频| 中文在线免费观看| 国产美女主播在线播放| 久久91超碰青草是什么| 美女在线一区二区| 日日摸夜夜添夜夜添亚洲女人| 亚洲中文字幕无码专区| 国产亚av手机在线观看| 激情视频免费网站| 美女网站色免费| 日本aⅴ中文| 亚洲福利专区| 98精品在线视频| 欧美久久综合性欧美| 国产精一品亚洲二区在线视频| 777欧美精品| 337人体粉嫩噜噜噜| 亚洲视频福利| 久久看人人爽人人| 九九在线视频| 欧美日韩日本国产亚洲在线| 特级西西人体4444xxxx| 欧美videos粗暴高清性| 成人免费毛片嘿嘿连载视频| 日本一级二级视频| 色先锋久久影院av| 九九热爱视频精品视频高清| 国产黑人绿帽在线第一区| 久久精品视频免费| 欧美性猛交xxxxx免费看| 999在线观看免费大全电视剧| 亚洲精品在线免费观看视频| 免费视频拗女稀缺一区二区| 久久精品亚洲欧美日韩精品中文字幕| 国产亚洲精品成人a| 国产美女精品视频免费播放软件| 成年网站在线观看| 国产精品拍拍拍| 亚洲国产欧美在线人成| 中文字幕久久精品一区二区| 天天摸在线视频| 一级欧美视频| 亚洲精品国产精品乱码不99按摩| 国产一区二区三区四区尤物| 在线日本视频| 日本三级免费看| 快she精品国产999| 久久亚洲精品成人| 国产精品老牛影院在线观看| 国产一区二区在线视频| 嫩草影视亚洲| 91精品国产福利在线观看麻豆| 国产麻豆免费| 国产亚洲精品自在久久| 亚洲v精品v日韩v欧美v专区| 欧美三级午夜理伦三级中视频| 欧美大片在线观看一区二区| 国产91色在线播放| 日本美女高清在线观看免费| 久久av中文字幕片| 91狠狠综合久久久久久| 欧美日韩国产精品激情在线播放| 日本中文字幕在线视频| 91午夜在线| 乱亲女h秽乱长久久久| 国产精品成人网| 成人综合婷婷国产精品久久蜜臀| 亚洲另类春色校园小说| 日韩免费高清在线观看| 99久久人妻精品免费二区| 亚洲日本中文字幕在线| www.夜夜操.com| 日韩免费在线观看av| 日韩在线影院| 久久久www成人免费毛片| 中文成人激情娱乐网| 国产成人澳门| 亚洲一区二区三区免费| 91麻豆精品国产91久久久使用方法| 进去里视频在线观看| 国产精品国码视频| 久久久久久久久久久免费视频| 国产精品久av福利在线观看| 97超碰国产精品女人人人爽| va亚洲va日韩不卡在线观看| 亚洲av无码国产精品久久不卡| 男女啪啪在线观看| 国产精品久久占久久| 99视频在线免费播放| 国语自产精品视频在线看8查询8| 精品一区二区三区免费看| 在线免费观看羞羞视频一区二区| 免费网站观看www在线观| 国产婷婷色一区二区三区四区| 日韩欧美中文在线观看| 欧美日韩精品一二三区| 日产日韩在线亚洲欧美| 精品黄色免费中文电影在线播放| 午夜在线网站| 97国产suv精品一区二区62| 中文字幕av影院| 伊人天天久久大香线蕉av色| 国产美女福利视频| 香蕉视频久久久| 污污的视频网站在线观看| 国产主播色在线| 好男人社区在线视频| 先锋影音av中文资源| 91影院在线免费观看| 精品国产老师黑色丝袜高跟鞋| av中字幕久久| 免费黄色影片在线| 色狮一区二区三区四区视频| ga∨成人网| 亚洲国产二区| 久久久精品在线观看| 成人一级黄色片| 日韩一区二区三区av| 国产精品99无码一区二区| av一本久道久久波多野结衣| 很污很黄的网站| 男人av在线播放| 先锋影音av在线| 一本色道88久久加勒比精品| 欧美成人三级在线播放| 精品少妇3p| 极品销魂美女一区二区三区| 国产熟女一区二区丰满| 国内激情视频在线观看| jizz久久精品永久免费| 中文人妻一区二区三区| 成人免费视频一区| av一区二区三| 日本一级大毛片a一| 99热精品一区二区| 99久久国产免费| xx欧美撒尿嘘撒尿xx| 五月婷婷六月香| 一区二区精品免费| 久久福利影视| 亚洲欧美日韩精品久久奇米色影视| 亚洲理论在线a中文字幕| ㊣最新国产の精品bt7086| 伦理片一区二区| 久久久久久久午夜| 亚洲一区二区三区高清视频| 亚洲国产精品一区制服丝袜| 俄罗斯一级**毛片在线播放| 国产偷人妻精品一区二区在线| 性一交一乱一伦一色一情| 日韩精品在线观看视频| 欧美日韩在线视频免费| 亚洲欧美日韩国产综合| 69国产精品视频免费观看| 在线a欧美视频| 欧美6一10sex性hd| 国产精品区一区二区三在线播放| 婷婷综合网站| 日韩精品一区二区三区中文不卡| 综合激情一区| 欧美曰成人黄网| 新婚的少妇hd中文字幕| 国产婷婷色一区二区三区四区| 丰满人妻一区二区三区四区53| 中文字幕伦av一区二区邻居| 欧美 国产 日本| 国产午夜亚洲精品羞羞网站| 国产欧美午夜| 1024成人网色www| 亚洲精品成a人| 亚洲成人精品一区| 免费久久久一本精品久久区| 99视频精品| 天堂中文视频在线| 女色窝人体色77777| 国产精选在线| 一个人www视频在线免费观看| 一卡二卡三卡在线观看| 亚洲国产欧美久久| 91在线视频国产| 九色精品免费永久在线| 日本一区二区三区播放| 老司机aⅴ在线精品导航| 男人揉女人奶房视频60分| 日韩欧美国产精品一区二区三区| 色婷婷综合视频| 国产日韩欧美亚洲| 国产成人亚洲欧美电影| 日韩成人一区二区| 97久久人人超碰| 日韩黄色片视频| 91精品国产乱码久久久久久久| 四虎影视成人精品国库在线观看| 男人天堂资源在线| 亚洲国产精品国自产拍av| 国内在线高清免费视频| 欧美激情中文字幕乱码免费| 久久一日本道色综合久久| 亚洲午夜精品一区| 色婷婷综合久久久久中文字幕| 欧美劲爆第一页| 十八禁视频网站在线观看| 四虎精品成人免费网站| 蜜乳av一区| 成人国产视频在线观看| 欧美一级欧美三级在线| 中文字幕有码在线视频| 欧美精品亚洲一区二区在线播放| 偷拍女澡堂一区二区三区| 天堂网中文在线观看| 欧美成人免费观看| 91蝌蚪视频在线观看| 一区二区三区波多野结衣在线观看| 亚洲毛片播放| 亚洲v.com| 成人网18免费软件大全| 久久国产免费看| 成年人视频免费| av午夜在线观看| 中韩乱幕日产无线码一区|