国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

Python+Django搭建自己的blog網(wǎng)站

 更新時(shí)間:2018年03月13日 08:52:41   作者:zhang_derek  
一直有種想要搭建自己博客系統(tǒng)打沖動(dòng),可惜需要前端知識較多,而且還要安裝一系列軟件并配置(windows平臺),后來偶然發(fā)現(xiàn)了Django這個(gè)神器,恰巧剛學(xué)過python,于是就又裝了ubuntu(安裝各種軟件配置都方便),折騰了半天,終于搭建起來自己的第一個(gè)簡易博客。

一、前言

1.1.環(huán)境

python版本:3.6

Django版本:1.11.6

1.2.預(yù)覽效果

最終搭建的blog的樣子,基本上滿足需求了。框架搭好了,至于CSS,可以根據(jù)自己喜好隨意搭配。

二、建立博客應(yīng)用

2.1.建立項(xiàng)目和應(yīng)用

創(chuàng)建工程blogproject

python manage.py startproject blogproject
創(chuàng)建blog應(yīng)用
python manage.py startpapp blog
打開 blogproject\ 目錄下的 settings.py 文件,找到 INSTALLED_APPS 設(shè)置項(xiàng),將 blog 應(yīng)用添加進(jìn)去。
INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'blog',
]

2.2.目錄結(jié)構(gòu)

三、創(chuàng)建blog的數(shù)據(jù)庫模型

3.1.設(shè)計(jì)博客的數(shù)據(jù)庫表結(jié)構(gòu)

博客最主要的功能就是展示我們寫的文章,它需要從某個(gè)地方獲取博客文章數(shù)據(jù)才能把文章展示出來,通常來說這個(gè)地方就是數(shù)據(jù)庫。我們把寫好的文章永久地保存在數(shù)據(jù)庫里,當(dāng)用戶訪問我們的博客時(shí),Django 就去數(shù)據(jù)庫里把這些數(shù)據(jù)取出來展現(xiàn)給用戶。

博客的文章應(yīng)該含有標(biāo)題、正文、作者、發(fā)表時(shí)間等數(shù)據(jù)。一個(gè)更加現(xiàn)代化的博客文章還希望它有分類、標(biāo)簽、評論等。為了更好地存儲(chǔ)這些數(shù)據(jù),我們需要合理地組織數(shù)據(jù)庫的表結(jié)構(gòu)。

 我們的博客初級版本主要包含博客文章,文章會(huì)有分類以及標(biāo)簽。一篇文章只能有一個(gè)分類,但可以打上很多標(biāo)簽。我們把分類和標(biāo)簽做成單獨(dú)的數(shù)據(jù)庫表,再把文章和分類、標(biāo)簽關(guān)聯(lián)起來。下面分別是分類和標(biāo)簽的數(shù)據(jù)庫表:

 分類id    分類名

     1         python

     2         Django

標(biāo)簽id      標(biāo)簽名

     1          python學(xué)習(xí)

     2          Django學(xué)習(xí)

3.2.編寫博客模型代碼

 分類數(shù)據(jù)庫表:

# blog/models.py

from django.db import models

class Category(models.Model):
 name = models.CharField(max_length=100)

Category 就是一個(gè)標(biāo)準(zhǔn)的 Python 類,它繼承了 models.Model 類,類名為 Category 。Category 類有一個(gè)屬性 name,它是 models.CharField 的一個(gè)實(shí)例。

我們需要 3 個(gè)表格:文章(Post)、分類(Category)以及標(biāo)簽(Tag),下面就來分別編寫它們對應(yīng)的 Python 類。模型的代碼通常寫在相關(guān)應(yīng)用的 models.py 文件里

# blog/models.py

from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
 '''
 Django 要求模型必須繼承 models.Model 類。
 Category 只需要一個(gè)簡單的分類名 name 就可以了。
 CharField 指定了分類名 name 的數(shù)據(jù)類型,CharField 是字符型,
 CharField 的 max_length 參數(shù)指定其最大長度,超過這個(gè)長度的分類名就不能被存入數(shù)據(jù)庫。
 '''
 name = models.CharField(max_length=100)

class Tag(models.Model):
 '''標(biāo)簽'''

 name = models.CharField(max_length=100)

class Post(models.Model):
 '''文章'''

 # 文章標(biāo)題
 title = models.CharField(max_length=70)

 # 文章正文,我們使用了 TextField。
 # 存儲(chǔ)比較短的字符串可以使用 CharField,但對于文章的正文來說可能會(huì)是一大段文本,因此使用 TextField 來存儲(chǔ)大段文本。
 body = models.TextField()

 # 這兩個(gè)列分別表示文章的創(chuàng)建時(shí)間和最后一次修改時(shí)間,存儲(chǔ)時(shí)間的字段用 DateTimeField 類型。
 created_time = models.DateTimeField()
 modified_time = models.DateTimeField()

 # 文章摘要,可以沒有文章摘要,但默認(rèn)情況下 CharField 要求我們必須存入數(shù)據(jù),否則就會(huì)報(bào)錯(cuò)。
 # 指定 CharField 的 blank=True 參數(shù)值后就可以允許空值了。
 excerpt = models.CharField(max_length=200,blank=True)

 # 我們在這里把文章對應(yīng)的數(shù)據(jù)庫表和分類、標(biāo)簽對應(yīng)的數(shù)據(jù)庫表關(guān)聯(lián)了起來,但是關(guān)聯(lián)形式稍微有點(diǎn)不同。
 # 我們規(guī)定一篇文章只能對應(yīng)一個(gè)分類,但是一個(gè)分類下可以有多篇文章,所以我們使用的是 ForeignKey,即一對多的關(guān)聯(lián)關(guān)系。
 # 而對于標(biāo)簽來說,一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用 ManyToManyField,表明這是多對多的關(guān)聯(lián)關(guān)系。
 # 同時(shí)我們規(guī)定文章可以沒有標(biāo)簽,因此為標(biāo)簽 tags 指定了 blank=True。
 category = models.ForeignKey(Category,on_delete=models.CASCADE)
 tags = models.ManyToManyField(Tag,blank=True)

 # 文章作者,這里 User 是從 django.contrib.auth.models 導(dǎo)入的。
 # django.contrib.auth 是 Django 內(nèi)置的應(yīng)用,專門用于處理網(wǎng)站用戶的注冊、登錄等流程,User 是 Django 為我們已經(jīng)寫好的用戶模型。
 # 這里我們通過 ForeignKey 把文章和 User 關(guān)聯(lián)了起來。
 # 因?yàn)槲覀円?guī)定一篇文章只能有一個(gè)作者,而一個(gè)作者可能會(huì)寫多篇文章,因此這是一對多的關(guān)聯(lián)關(guān)系,和 Category 類似。
 author = models.ForeignKey(User,on_delete=models.CASCADE)

四、遷移數(shù)據(jù)庫

4.1.設(shè)置數(shù)據(jù)庫為Mysql

更改setting.py默認(rèn)配置

# DATABASES = {
#  'default': {
#   'ENGINE': 'django.db.backends.sqlite3',
#   'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#  }
# }

DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.mysql',
  'NAME': 'django',  #數(shù)據(jù)庫名字
  'USER': 'root',   #賬號
  'PASSWORD': '123456',  #密碼
  'HOST': '127.0.0.1', #IP
  'PORT': '3306',     #端口
 }
}
導(dǎo)入Pymysql
# blog/__init__.py

import pymysql
pymysql.install_as_MySQLdb()

4.2.遷移數(shù)據(jù)庫

分別運(yùn)行下面兩條命令

python manage.py makemigrations 
python manage.py migrate
當(dāng)我們執(zhí)行了 python manage.py makemigrations 后,Django 在 blog 應(yīng)用的 migrations\ 目錄下生成了一個(gè) 0001_initial.py 文件,這個(gè)文件是 Django 用來記錄我們對模型做了哪些修改的文件。目前來說,我們在 models.py 文件里創(chuàng)建了 3 個(gè)模型類,Django 把這些變化記錄在了 0001_initial.py 里。

不過此時(shí)還只是告訴了 Django 我們做了哪些改變,為了讓 Django 真正地為我們創(chuàng)建數(shù)據(jù)庫表,接下來又執(zhí)行了 python manage.py migrate 命令。Django 通過檢測應(yīng)用中 migrations\ 目錄下的文件,得知我們對數(shù)據(jù)庫做了哪些操作,然后它把這些操作翻譯成數(shù)據(jù)庫操作語言,從而把這些操作作用于真正的數(shù)據(jù)庫。

你可以看到命令的輸出除了 Applying blog.0001_initial... OK 外,Django 還對其它文件做了操作。這是因?yàn)槌宋覀冏约航⒌?blog 應(yīng)用外,Django 自身還內(nèi)置了很多應(yīng)用,這些應(yīng)用本身也是需要存儲(chǔ)數(shù)據(jù)的??梢栽?settings.py 的 INSTALLED_APP 設(shè)置里看到這些應(yīng)用,當(dāng)然我們目前不必關(guān)心這些。

#blogproject/settings.py

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'blog',
]
運(yùn)行下面的命令將看到輸出了經(jīng) Django 翻譯后的數(shù)據(jù)庫表創(chuàng)建語句,這有助于你理解 Django ORM 的工作機(jī)制。
python manage.py sqlmigrate blog 0001

4.3.存數(shù)據(jù)

打開一個(gè)交互式命令行

python manage.py shell
首先我們來創(chuàng)建一個(gè)分類和一個(gè)標(biāo)簽:

我們首先導(dǎo)入 3 個(gè)之前寫好的模型類,然后實(shí)例化了一個(gè) Category 類和一個(gè) Tag 類,為他們的屬性 name 賦了值。為了讓 Django 把這些數(shù)據(jù)保存進(jìn)數(shù)據(jù)庫,調(diào)用實(shí)例的 save方法即可。

創(chuàng)建文章之前,我們需要先創(chuàng)建一個(gè) User,用于指定文章的作者。創(chuàng)建 User 的命令 Django 已經(jīng)幫我們寫好了,依然是通過 manage.py 來運(yùn)行。首先exit()退出命令交互欄,運(yùn)行 python manage.py createsuperuser 命令并根據(jù)提示創(chuàng)建用戶:用戶名,郵箱,密碼

再次運(yùn)行 python manage.py shell 進(jìn)入 Python 命令交互欄,開始創(chuàng)建文章:

由于我們重啟了 shell,因此需要重新導(dǎo)入了 Category、Tag、Post 以及 User。我們還導(dǎo)入了一個(gè) Django 提供的輔助模塊 timezone,這是因?yàn)槲覀冃枰{(diào)用它的 now() 方法為 created_time 和 modified_time 指定時(shí)間,容易理解 now 方法返回當(dāng)前時(shí)間。然后我們根據(jù)用戶名和分類名,通過 get 方法取出了存在數(shù)據(jù)庫中的 User 和 Category(取數(shù)據(jù)的方法將在下面介紹)。接著我們?yōu)槲恼轮付?nbsp;title、body 、created_time、modified_time值,并把它和前面創(chuàng)建的 Category 以及 User 關(guān)聯(lián)了起來。允許為空 excerpttags 我們就沒有為它們指定值了。

4.4.取數(shù)據(jù)

 數(shù)據(jù)已經(jīng)存入數(shù)據(jù)庫了,現(xiàn)在要把它們?nèi)〕鰜砜纯矗?/p>

 

objects 是我們的模型管理器,它為我們提供一系列從數(shù)據(jù)庫中取數(shù)據(jù)方法,這里我們使用了 all 方法,表示我們要把對應(yīng)的數(shù)據(jù)全部取出來。可以看到 all 方法都返回了數(shù)據(jù),這些數(shù)據(jù)應(yīng)該是我們之前存進(jìn)去的,但是顯示的字符串有點(diǎn)奇怪,無法看出究竟是不是我們之前存入的數(shù)據(jù)。為了讓顯示出來的數(shù)據(jù)更加人性化一點(diǎn),我們?yōu)?3 個(gè)模型分別增加一個(gè) __str__ 方法:

# blog/models.py

from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
 '''
 Django 要求模型必須繼承 models.Model 類。
 Category 只需要一個(gè)簡單的分類名 name 就可以了。
 CharField 指定了分類名 name 的數(shù)據(jù)類型,CharField 是字符型,
 CharField 的 max_length 參數(shù)指定其最大長度,超過這個(gè)長度的分類名就不能被存入數(shù)據(jù)庫。
 '''
 name = models.CharField(max_length=100)

 def __str__(self):
  return self.name

class Tag(models.Model):
 '''標(biāo)簽'''

 name = models.CharField(max_length=100)

 def __str__(self):
  return self.name

class Post(models.Model):
 '''文章'''

 # 文章標(biāo)題
 title = models.CharField(max_length=70)

 # 文章正文,我們使用了 TextField。
 # 存儲(chǔ)比較短的字符串可以使用 CharField,但對于文章的正文來說可能會(huì)是一大段文本,因此使用 TextField 來存儲(chǔ)大段文本。
 body = models.TextField()

 # 這兩個(gè)列分別表示文章的創(chuàng)建時(shí)間和最后一次修改時(shí)間,存儲(chǔ)時(shí)間的字段用 DateTimeField 類型。
 created_time = models.DateTimeField()
 modified_time = models.DateTimeField()

 # 文章摘要,可以沒有文章摘要,但默認(rèn)情況下 CharField 要求我們必須存入數(shù)據(jù),否則就會(huì)報(bào)錯(cuò)。
 # 指定 CharField 的 blank=True 參數(shù)值后就可以允許空值了。
 excerpt = models.CharField(max_length=200,blank=True)

 # 我們在這里把文章對應(yīng)的數(shù)據(jù)庫表和分類、標(biāo)簽對應(yīng)的數(shù)據(jù)庫表關(guān)聯(lián)了起來,但是關(guān)聯(lián)形式稍微有點(diǎn)不同。
 # 我們規(guī)定一篇文章只能對應(yīng)一個(gè)分類,但是一個(gè)分類下可以有多篇文章,所以我們使用的是 ForeignKey,即一對多的關(guān)聯(lián)關(guān)系。
 # 而對于標(biāo)簽來說,一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用 ManyToManyField,表明這是多對多的關(guān)聯(lián)關(guān)系。
 # 同時(shí)我們規(guī)定文章可以沒有標(biāo)簽,因此為標(biāo)簽 tags 指定了 blank=True。
 category = models.ForeignKey(Category,on_delete=models.CASCADE)
 tags = models.ManyToManyField(Tag,blank=True)

 # 文章作者,這里 User 是從 django.contrib.auth.models 導(dǎo)入的。
 # django.contrib.auth 是 Django 內(nèi)置的應(yīng)用,專門用于處理網(wǎng)站用戶的注冊、登錄等流程,User 是 Django 為我們已經(jīng)寫好的用戶模型。
 # 這里我們通過 ForeignKey 把文章和 User 關(guān)聯(lián)了起來。
 # 因?yàn)槲覀円?guī)定一篇文章只能有一個(gè)作者,而一個(gè)作者可能會(huì)寫多篇文章,因此這是一對多的關(guān)聯(lián)關(guān)系,和 Category 類似。
 author = models.ForeignKey(User,on_delete=models.CASCADE)

 def __str__(self):
  return self.title
__str__

定義好 __str__ 方法后,解釋器顯示的內(nèi)容將會(huì)是 __str__ 方法返回的內(nèi)容。這里 Category 返回分類名 name ,Tag 返回標(biāo)簽名,而 Post 返回它的 title。

 exit() 退出 Shell,再重新運(yùn)行 python manage.py shell 進(jìn)入 Shell。

 

可以看到返回的是我們之前存入的數(shù)據(jù)。

此外我們在創(chuàng)建文章時(shí)提到了通過 get 方法來獲取數(shù)據(jù),這里 all 方法和 get 方法的區(qū)別是:all 方法返回全部數(shù)據(jù),是一個(gè)類似于列表的數(shù)據(jù)結(jié)構(gòu)(QuerySet);而 get 返回一條記錄數(shù)據(jù),如有多條記錄或者沒有記錄,get 方法均會(huì)拋出相應(yīng)異常。

 五、博客首頁視圖

5.1.Django處理HTTP請求

Web 應(yīng)用的交互過程其實(shí)就是 HTTP 請求與響應(yīng)的過程。無論是在 PC 端還是移動(dòng)端,我們通常使用瀏覽器來上網(wǎng),上網(wǎng)流程大致來說是這樣的:

我們打開瀏覽器,在地址欄輸入想訪問的網(wǎng)址,比如 http://www.cnblogs.com/。瀏覽器知道我們想要訪問哪個(gè)網(wǎng)址后,它在后臺幫我們做了很多事情。主要就是把我們的訪問意圖包裝成一個(gè) HTTP 請求,發(fā)給我們想要訪問的網(wǎng)址所對應(yīng)的服務(wù)器。通俗點(diǎn)說就是瀏覽器幫我們通知網(wǎng)站的服務(wù)器,說有人來訪問你啦,訪問的請求都寫在 HTTP 里了,你按照要求處理后告訴我,我再幫你回應(yīng)他!服務(wù)器處理了HTTP 請求,然后生成一段 HTTP 響應(yīng)給瀏覽器。瀏覽器解讀這個(gè)響應(yīng),把相關(guān)的內(nèi)容在瀏覽器里顯示出來,于是我們就看到了網(wǎng)站的內(nèi)容。比如你訪問了我的博客主頁http://www.cnblogs.com/derek1184405959/,服務(wù)器接收到這個(gè)請求后就知道用戶訪問的是首頁,首頁顯示的是全部文章列表,于是它從數(shù)據(jù)庫里把文章數(shù)據(jù)取出來,生成一個(gè)寫著這些數(shù)據(jù)的 HTML 文檔,包裝到 HTTP 響應(yīng)里發(fā)給瀏覽器,瀏覽器解讀這個(gè)響應(yīng),把 HTML 文檔顯示出來,我們就看到了文章列表的內(nèi)容。

因此,Django 作為一個(gè) Web 框架,它的使命就是處理流程中的第二步。即接收瀏覽器發(fā)來的 HTTP 請求,返回相應(yīng)的 HTTP 響應(yīng)。于是引出這么幾個(gè)問題:

Django 如何接收 HTTP 請求? Django 如何處理這個(gè) HTTP 請求? Django 如何生成 HTTP 響應(yīng)?

對于如何處理這些問題,Django 有其一套規(guī)定的機(jī)制。我們按照 Django 的規(guī)定,就能開發(fā)出所需的功能

Hello視圖函數(shù)

 我們先以一個(gè)最簡單的 Hello World 為例來看看 Django 處理上述問題的機(jī)制是怎么樣的。

 綁定url和視圖函數(shù)

 首先 Django 需要知道當(dāng)用戶訪問不同的網(wǎng)址時(shí),應(yīng)該如何處理這些不同的網(wǎng)址(即所說的路由)。Django 的做法是把不同的網(wǎng)址對應(yīng)的處理函數(shù)寫在一個(gè) urls.py 文件里,當(dāng)用戶訪問某個(gè)網(wǎng)址時(shí),Django 就去會(huì)這個(gè)文件里找,如果找到這個(gè)網(wǎng)址,就會(huì)調(diào)用和它綁定在一起的處理函數(shù)(叫做視圖函數(shù))。

 下面是具體的做法,首先在 blog 應(yīng)用的目錄下創(chuàng)建一個(gè) urls.py 文件,在 blog\urls.py 中寫入這些代碼:

# blog/urls.py

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

urlpatterns = [
 url(r'^$',views.index,name='index'),
]
我們首先從 django.conf.urls 導(dǎo)入了 url 函數(shù),又從當(dāng)前目錄下導(dǎo)入了 views 模塊。然后我們把網(wǎng)址和處理函數(shù)的關(guān)系寫在了 urlpatterns 列表里。

綁定關(guān)系的寫法是把網(wǎng)址和對應(yīng)的處理函數(shù)作為參數(shù)傳給 url 函數(shù)(第一個(gè)參數(shù)是網(wǎng)址,第二個(gè)參數(shù)是處理函數(shù)),另外我們還傳遞了另外一個(gè)參數(shù) name,這個(gè)參數(shù)的值將作為處理函數(shù) index 的別名,這在以后會(huì)用到。

注意這里我們的網(wǎng)址是用正則表達(dá)式寫的,Django 會(huì)用這個(gè)正則表達(dá)式去匹配用戶實(shí)際輸入的網(wǎng)址,如果匹配成功,就會(huì)調(diào)用其后面的視圖函數(shù)做相應(yīng)的處理。

比如說我們本地開發(fā)服務(wù)器的域名是 http://127.0.0.1:8000,那么當(dāng)用戶輸入網(wǎng)址 http://127.0.0.1:8000 后,Django 首先會(huì)把協(xié)議 http、域名 127.0.0.1 和端口號 8000 去掉,此時(shí)只剩下一個(gè)空字符串,而 r'^$' 的模式正是匹配一個(gè)空字符串(這個(gè)正則表達(dá)式的意思是以空字符串開頭且以空字符串結(jié)尾),于是二者匹配,Django 便會(huì)調(diào)用其對應(yīng)的 views.index 函數(shù)。

注意:在項(xiàng)目根目錄的 blogproject\ 目錄下(即 settings.py 所在的目錄),原本就有一個(gè) urls.py 文件,這是整個(gè)工程項(xiàng)目的 URL 配置文件。而我們這里新建了一個(gè) urls.py 文件,且位于 blog 應(yīng)用下。這個(gè)文件將用于 blog 應(yīng)用相關(guān)的 URL 配置。不要把兩個(gè)文件搞混了。

編寫視圖函數(shù)

第二步就是要實(shí)際編寫我們的 views.index 視圖函數(shù)了,按照慣例視圖函數(shù)定義在 views.py 文件里:

from django.shortcuts import HttpResponse

def index(request):
 return HttpResponse('歡迎訪問我的博客')
我們前面說過,Web 服務(wù)器的作用就是接收來自用戶的 HTTP 請求,根據(jù)請求內(nèi)容作出相應(yīng)的處理,并把處理結(jié)果包裝成 HTTP 響應(yīng)返回給用戶。

這個(gè)兩行的函數(shù)體現(xiàn)了這個(gè)過程。它首先接受了一個(gè)名為 request 的參數(shù),這個(gè) request就是 Django 為我們封裝好的 HTTP 請求,它是類 HttpRequest 的一個(gè)實(shí)例。然后我們便直接返回了一個(gè) HTTP 響應(yīng)給用戶,這個(gè) HTTP 響應(yīng)也是 Django 幫我們封裝好的,它是類 HttpResponse 的一個(gè)實(shí)例,只是我們給它傳了一個(gè)自定義的字符串參數(shù)。

瀏覽器接收到這個(gè)響應(yīng)后就會(huì)在頁面上顯示出我們傳遞的內(nèi)容:歡迎訪問我的博客

配置項(xiàng)目URL

還差最后一步了,我們前面建立了一個(gè) urls.py 文件,并且綁定了 URL 和視圖函數(shù) index,但是 Django 并不知道。Django 匹配 URL 模式是在 blogproject\ 目錄(即 settings.py 文件所在的目錄)的 urls.py 下的,所以我們要把 blog 應(yīng)用下的 urls.py 文件包含到 blogproject\urls.py 里去:

# blogproject/urls.py

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

urlpatterns = [
 url('admin/', admin.site.urls),
 url('', include('blog.urls')),
]
我們這里導(dǎo)入了一個(gè) include 函數(shù),然后利用這個(gè)函數(shù)把 blog 應(yīng)用下的 urls.py 文件包含了進(jìn)來。此外 include 前還有一個(gè) r'',這是一個(gè)空字符串。這里也可以寫其它字符串,Django 會(huì)把這個(gè)字符串和后面 include 的 urls.py 文件中的 URL 拼接。比如說如果我們這里把 r'' 改成 r'blog/',而我們在 blog.urls 中寫的 URL 是 r'^$',即一個(gè)空字符串。那么 Django 最終匹配的就是 blog/ 加上一個(gè)空字符串,即 blog/。

運(yùn)行結(jié)果

運(yùn)行 python manage.py runserver 打開開發(fā)服務(wù)器,在瀏覽器輸入開發(fā)服務(wù)器的地址 http://127.0.0.1:8000/,可以看到 Django 返回的內(nèi)容了。

5.2.使用Django模板系統(tǒng)

這基本上就上 Django 的開發(fā)流程了,寫好處理 HTTP 請求和返回 HTTP 響應(yīng)的視圖函數(shù),然后把視圖函數(shù)綁定到相應(yīng)的 URL 上。

但是等一等!我們看到在視圖函數(shù)里返回的是一個(gè) HttpResponse 類的實(shí)例,我們給它傳入了一個(gè)希望顯示在用戶瀏覽器上的字符串。但是我們的博客不可能只顯示這么一句話,它有可能會(huì)顯示很長很長的內(nèi)容。比如我們發(fā)布的博客文章列表,或者一大段的博客文章。我們不能每次都把這些大段大段的內(nèi)容傳給 HttpResponse。

Django 對這個(gè)問題給我們提供了一個(gè)很好的解決方案,叫做模板系統(tǒng)。Django 要我們把大段的文本寫到一個(gè)文件里,然后 Django 自己會(huì)去讀取這個(gè)文件,再把讀取到的內(nèi)容傳給 HttpResponse。讓我們用模板系統(tǒng)來改造一下上面的例子。

首先在我們的項(xiàng)目根目錄(即 manage.py 文件所在目錄)下建立一個(gè)名為 templates 的文件夾,用來存放我們的模板。然后在 templates\ 目錄下建立一個(gè)名為 blog 的文件夾,用來存放和 blog 應(yīng)用相關(guān)的模板。

當(dāng)然模板存放在哪里是無關(guān)緊要的,只要 Django 能夠找到的就好。但是我們建立這樣的文件夾結(jié)構(gòu)的目的是把不同應(yīng)用用到的模板隔離開來,這樣方便以后維護(hù)。我們在 templates\blog 目錄下建立一個(gè)名為 index.html 的文件

在 templates\blog\index.html 文件里寫入下面的代碼:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{{ title }}</title>
</head>
<body>
 <h1>{{ welcome }}</h1>
</body>
</html>
這是一個(gè)標(biāo)準(zhǔn)的 HTML 文檔,只是里面有兩個(gè)比較奇怪的地方:{{ title }}{{ welcome }}。這是 Django 規(guī)定的語法。用 {{ }} 包起來的變量叫做模板變量。Django 在渲染這個(gè)模板的時(shí)候會(huì)根據(jù)我們傳遞給模板的變量替換掉這些變量。最終在模板中顯示的將會(huì)是我們傳遞的值。

模板寫好了,還得告訴 Django 去哪里找模板,在 settings.py 文件里設(shè)置一下模板文件所在的路徑。在 settings.py 找到 TEMPLATES 選項(xiàng),其中 DIRS 就是設(shè)置模板的路徑,在 [] 中寫入 os.path.join(BASE_DIR, 'templates'),即像下面這樣:

TEMPLATES = [
 {
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': [os.path.join(BASE_DIR, 'templates')]
  ,
  'APP_DIRS': True,
  'OPTIONS': {
   'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
   ],
  },
 },
]
這里 BASE_DIR 是 settings.py 在配置開頭前面定義的變量,記錄的是工程根目錄 blogproject\ 的值(注意是最外層的 blogproject\ 目錄)。在這個(gè)目錄下有模板文件所在的目錄 templates\,于是利用os.path.join 把這兩個(gè)路徑連起來,構(gòu)成完整的模板路徑,Django 就知道去這個(gè)路徑下面找我們的模板了。

視圖函數(shù)可以改一下了:

from django.http import HttpResponse
from django.shortcuts import render

def index(request):
 return render(request, 'blog/index.html', context={
      'title': '我的博客首頁',
      'welcome': '歡迎訪問我的博客首頁'
     })
這里我們不再是直接把字符串傳給 HttpResponse 了,而是調(diào)用 Django 提供的 render 函數(shù)。這個(gè)函數(shù)根據(jù)我們傳入的參數(shù)來構(gòu)造 HttpResponse。

我們首先把 HTTP 請求傳了進(jìn)去,然后 render 根據(jù)第二個(gè)參數(shù)的值 blog/index.html 找到這個(gè)模板文件并讀取模板中的內(nèi)容。之后 render 根據(jù)我們傳入的 context 參數(shù)的值把模板中的變量替換為我們傳遞的變量的值,{{ title }} 被替換成了 context 字典中 title對應(yīng)的值,同理 {{ welcome }} 也被替換成相應(yīng)的值。

最終,我們的 HTML 模板中的內(nèi)容字符串被傳遞給 HttpResponse 對象并返回給瀏覽器(Django 在 render 函數(shù)里隱式地幫我們完成了這個(gè)過程),這樣用戶的瀏覽器上便顯示出了我們寫的 HTML 模板的內(nèi)容

六、真正的Django博客首頁視圖

 在此之前我們已經(jīng)編寫了 Blog 的首頁視圖,并且配置了 URL 和模板,讓 Django 能夠正確地處理 HTTP 請求并返回合適的 HTTP 響應(yīng)。不過我們僅僅在首頁返回了一句話:歡迎訪問我的博客。這是個(gè) Hello World 級別的視圖函數(shù),我們需要編寫真正的首頁視圖函數(shù),當(dāng)用戶訪問我們的博客首頁時(shí),他將看到我們發(fā)表的博客文章列表。像前面演示的那樣

 

6.1.首頁視圖函數(shù)

上一節(jié)我們闡明了 Django 的開發(fā)流程。即首先配置 URL,把 URL 和相應(yīng)的視圖函數(shù)綁定,一般寫在 urls.py 文件里,然后在工程的 urls.py 文件引入。其次是編寫視圖函數(shù),視圖中需要渲染模板,我們也在 settings.py 中進(jìn)行了模板相關(guān)的配置,讓 Django 能夠找到需要渲染的模板。最后把渲染完成的 HTTP 響應(yīng)返回就可以了。相關(guān)的配置和準(zhǔn)備工作都在之前完成了,這里我們只需專心編寫視圖函數(shù),讓它實(shí)現(xiàn)我們想要的功能即可。

首頁的視圖函數(shù)其實(shí)很簡單,代碼像這樣:

# blog/views.py

from django.shortcuts import render
from . models import Post

def index(request):
 post_list = Post.objects.all().order_by('-created_time')
 return render(request,'blog/index.html',{'post_list':post_list})
 
我們曾經(jīng)在前面的章節(jié)講解過模型管理器 objects 的使用。這里我們使用 all() 方法從數(shù)據(jù)庫里獲取了全部的文章,存在了 post_list 變量里。all 方法返回的是一個(gè) QuerySet(可以理解成一個(gè)類似于列表的數(shù)據(jù)結(jié)構(gòu)),由于通常來說博客文章列表是按文章發(fā)表時(shí)間倒序排列的,即最新的文章排在最前面,所以我們緊接著調(diào)用了 order_by 方法對這個(gè)返回的 queryset 進(jìn)行排序。排序依據(jù)的字段是 created_time,即文章的創(chuàng)建時(shí)間。- 號表示逆序,如果不加 - 則是正序。 接著如之前所做,我們渲染了 blog\index.html 模板文件,并且把包含文章列表數(shù)據(jù)的 post_list 變量傳給了模板。

6.2.處理靜態(tài)文件

我們的項(xiàng)目使用了從網(wǎng)上下載的一套博客模板 點(diǎn)擊這里下載全套模板。這里面除了HTML 文檔外,還包含了一些 CSS 文件和 JavaScript 文件以讓網(wǎng)頁呈現(xiàn)出我們現(xiàn)在看到的樣式。同樣我們需要對 Django 做一些必要的配置,才能讓 Django 知道如何在開發(fā)服務(wù)器中引入這些 CSS 和 JavaScript 文件,這樣才能讓博客頁面的 CSS 樣式生效。

按照慣例,我們把 CSS 和 JavaScript 文件放在 blog 應(yīng)用的 static\ 目錄下。因此,先在 blog 應(yīng)用下建立一個(gè) static 文件夾。同時(shí),為了避免和其它應(yīng)用中的 CSS 和 JavaScript 文件命名沖突(別的應(yīng)用下也可能有和 blog 應(yīng)用下同名的 CSS 、JavaScript 文件),我們再在 static\ 目錄下建立一個(gè) blog 文件夾,把下載的博客模板中的 css 和 js 文件夾連同里面的全部文件一同拷貝進(jìn)這個(gè)目錄。目錄結(jié)構(gòu)

用下載的博客模板中的 index.html 文件替換掉之前我們自己寫的 index.html 文件。如果你好奇,現(xiàn)在就可以運(yùn)行開發(fā)服務(wù)器,看看首頁是什么樣子。

 

如圖所示,你會(huì)看到首頁顯示的樣式非?;靵y,原因是瀏覽器無法正確加載 CSS 等樣式文件。需要以 Django 的方式來正確地處理 CSS 和 JavaScript 等靜態(tài)文件的加載路徑。CSS 樣式文件通常在 HTML 文檔的 head 標(biāo)簽里引入,打開 index.html 文件,在文件的開始處找到 head 標(biāo)簽包裹的內(nèi)容,大概像這樣:

<head>
 <title>Black &amp; White</title>

 <!-- meta -->
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">

 <!-- css -->
 <link rel="stylesheet" href="css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" >
 <link rel="stylesheet"  rel="external nofollow" rel="external nofollow" rel="external nofollow" >
 <link rel="stylesheet" href="css/pace.css" rel="external nofollow" >
 <link rel="stylesheet" href="css/custom.css" rel="external nofollow" >

 <!-- js -->
 <script src="js/jquery-2.1.3.min.js"></script>
 <script src="js/bootstrap.min.js"></script>
 <script src="js/pace.min.js"></script>
 <script src="js/modernizr.custom.js"></script>
</head>
 

CSS 樣式文件的路徑在 link 標(biāo)簽的 href 屬性里,而 JavaScript 文件的路徑在 script 標(biāo)簽的 src 屬性里。可以看到諸如 `href="css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" 或者 src="js/jquery-2.1.3.min.js" 這樣的引用,由于引用文件的路徑不對,所以瀏覽器引入這些文件失敗。我們需要把它們改成正確的路徑。把代碼改成下面樣子,正確地引入 static 文件下的 CSS 和 JavaScript 文件:

{% load staticfiles %}

<!DOCTYPE html>
<html>
<head>
 <title>Black &amp; White</title>

 <!-- meta -->
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">

 <!-- css -->
 <link rel="stylesheet" href="{% static 'blog/css/bootstrap.min.css' %}" rel="external nofollow" rel="external nofollow" >
 <link rel="stylesheet"  rel="external nofollow" rel="external nofollow" rel="external nofollow" >
 <link rel="stylesheet" href="{% static 'blog/css/pace.css' %}" rel="external nofollow" rel="external nofollow" >
 <link rel="stylesheet" href="{% static 'blog/css/custom.css' %}" rel="external nofollow" >

 <!-- js -->
 <script src="{% static 'blog/js/jquery-2.1.3.min.js' %}"></script>
 <script src="{% static 'blog/js/bootstrap.min.js' %}"></script>
 <script src="{% static 'blog/js/pace.min.js' %}"></script>
 <script src="{% static 'blog/js/modernizr.custom.js' %}"></script>
</head>

<body>

<!-- 其它內(nèi)容 -->

<script src="{% static 'blog/js/script.js' %}"></script>

</body>
</html>
我們把引用路徑放在了一個(gè)奇怪的符號里,例如:href="{% static 'blog/css/bootstrap.min.css' %}" rel="external nofollow" rel="external nofollow" 。用 {% %} 包裹起來的叫做模板標(biāo)簽。我們前面說過用 {{ }} 包裹起來的叫做模板變量,其作用是在最終渲染的模板里顯示由視圖函數(shù)傳過來的變量值。而這里我們使用的模板標(biāo)簽的功能則類似于函數(shù),例如這里的 static 模板標(biāo)簽,它把跟在后面的字符串 'css/bootstrap.min.css' 轉(zhuǎn)換成正確的文件引入路徑。這樣 css 和 js 文件才能被正確加載,樣式才能正常顯示。

為了能在模板中使用 {% static %} 模板標(biāo)簽,別忘了在最頂部添加 {% load staticfiles %} 。static 模板標(biāo)簽位于 staticfiles 模塊中,只有通過 load 模板標(biāo)簽將該模塊引入后,才能在模板中使用 {% static %} 標(biāo)簽。

替換完成后你可以刷新頁面并看看網(wǎng)頁的源代碼,看一看 {% static %} 模板標(biāo)簽在頁面渲染后究竟被替換成了什么樣的值。例如我們可以看到

<link rel="stylesheet" href="{% static 'blog/css/pace.css' %}" rel="external nofollow" rel="external nofollow" >

這一部分最終在瀏覽器中顯示的是:

<link rel="stylesheet" href="/static/blog/css/pace.css" rel="external nofollow" >

這正是 pace.css 文件所在的路徑,其它的文件路徑也被類似替換??梢钥吹?{% static %} 標(biāo)簽的作用實(shí)際就是把后面的字符串加了一個(gè) /static/ 前綴,比如 {% static 'blog/css/pace.css' %} 最終渲染的值是 /static/blog/css/pace.css。而 /static/ 前綴是我們在 settings.py 文件中通過 STATIC_URL = '/static/' 指定的。事實(shí)上,如果我們直接把引用路徑寫成 /static/blog/css/pace.css 也是可以的,那么為什么要使用 {% static %} 標(biāo)簽?zāi)??想一下,目?URL 的前綴是 /static/,如果哪一天因?yàn)槟承┰颍覀冃枰?/static/ 改成 /resource/,如果你是直接寫的引用路勁而沒有使用 static 模板標(biāo)簽,那么你可能需要改 N 個(gè)地方。如果你使用了 static 模板標(biāo)簽,那么只要在 settings.py 處改一個(gè)地方就可以了,即把 STATIC_URL = '/static/' 改成 STATIC_URL = '/resource/'。

注意這里有一個(gè) CSS 文件的引入

<link rel="stylesheet" href="

我們沒有使用模板標(biāo)簽,因?yàn)檫@里的引用的文件是一個(gè)外部文件,不是我們項(xiàng)目里 static\blog\css\ 目錄下的文件,因此無需使用模板標(biāo)簽。

正確引入了靜態(tài)文件后樣式顯示正常了。

6.3修改模板

 目前我們看到的只是模板中預(yù)先填充的一些數(shù)據(jù),我們得讓它顯示從數(shù)據(jù)庫中獲取的文章數(shù)據(jù)。下面來稍微改造一下模板:

在模板 index.html 中你會(huì)找到一系列 article 標(biāo)簽:

templates/blog/index.html

...
<article class="post post-1">
 ...
</article>

<article class="post post-2">
 ...
</article>

<article class="post post-3">
 ...
</article>
...

這里面包裹的內(nèi)容顯示的就是文章數(shù)據(jù)了。我們前面在視圖函數(shù) index 里給模板傳了一個(gè) post_list 變量,它里面包含著從數(shù)據(jù)庫中取出的文章列表數(shù)據(jù)。就像 Python 一樣,我們可以在模板中循環(huán)這個(gè)列表,把文章一篇篇循環(huán)出來,然后一篇篇顯示文章的數(shù)據(jù)。要在模板中使用循環(huán),需要使用到前面提到的模板標(biāo)簽,這次使用 {% for %} 模板標(biāo)簽。將 index.html 中多余的 article 標(biāo)簽刪掉,只留下一個(gè) article 標(biāo)簽,然后寫上下列代碼:

templates/blog/index.html

...
{% for post in post_list %}
 <article class="post post-{{ post.pk }}">
 ...
 </article>
{% empty %}
 <div class="no-post">暫時(shí)還沒有發(fā)布的文章!</div>
{% endfor %}
...

可以看到語法和 Python 的 for 循環(huán)類似,只是被 {% %} 這樣一個(gè)模板標(biāo)簽符號包裹著。{% empty %} 的作用是當(dāng) post_list 為空,即數(shù)據(jù)庫里沒有文章時(shí)顯示 {% empty %} 下面的內(nèi)容,最后我們用 {% endfor %} 告訴 Django 循環(huán)在這里結(jié)束了。

你可能不太理解模板中的 post 和 post_list 是什么。post_list 是一個(gè) QuerySet(類似于一個(gè)列表的數(shù)據(jù)結(jié)構(gòu)),其中每一項(xiàng)都是之前定義在 blog\models.py 中的 Post 類的實(shí)例,且每個(gè)實(shí)例分別對應(yīng)著數(shù)據(jù)庫中每篇文章的記錄。因此我們循環(huán)遍歷 post_list ,每一次遍歷的結(jié)果都保存在 post變量里。所以我們使用模板變量來顯示 post 的屬性值。例如這里的 {{ post.pk }}(pk 是 primary key 的縮寫,即 post 對應(yīng)于數(shù)據(jù)庫中記錄的 id 值,該屬性盡管我們沒有顯示定義,但是 Django 會(huì)自動(dòng)為我們添加)。

 我們把標(biāo)題替換成 post 的 title 屬性值。注意要把它包裹在模板變量里,因?yàn)樗罱K要被替換成實(shí)際的 title 值。

<h1 class="entry-title">
 <a href="single.html" rel="external nofollow" >{{ post.title }}</a>
</h1>

下面這 5 個(gè) span 標(biāo)簽里分別顯示了分類(category)、文章發(fā)布時(shí)間、文章作者、評論數(shù)、閱讀量。

<div class="entry-meta">
 <span class="post-category"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Django 博客教程</a></span>
 <span class="post-date"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><time class="entry-date"
           datetime="2012-11-09T23:15:57+00:00">2017年5月11日</time></a></span>
 <span class="post-author"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >追夢人物</a></span>
 <span class="comments-link"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4 評論</a></span>
 <span class="views-count"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >588 閱讀</a></span>
</div>

再次替換掉一些數(shù)據(jù),由于評論數(shù)和閱讀量暫時(shí)沒法替換,因此先留著,我們在之后實(shí)現(xiàn)了這些功能后再來修改它,目前只替換分類、文章發(fā)布時(shí)間、文章作者:

<div class="entry-meta">
 <span class="post-category"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.category.name }}</a></span>
 <span class="post-date"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><time class="entry-date"
           datetime="{{ post.created_time }}">{{ post.created_time }}</time></a></span>
 <span class="post-author"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.author }}</a></span>
 <span class="comments-link"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4 評論</a></span>
 <span class="views-count"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >588 閱讀</a></span>
</div>

這里 p 標(biāo)簽里顯示的是摘要

<div class="entry-content clearfix">
 <p>免費(fèi)、中文、零基礎(chǔ),完整的項(xiàng)目,基于最新版 Django 1.10 和 Python 3.5。帶你從零開始一步步開發(fā)屬于自己的博客網(wǎng)站,幫助你以最快的速度掌握 Django
 開發(fā)的技巧...</p>
 <div class="read-more cl-effect-14">
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="more-link">繼續(xù)閱讀 <span class="meta-nav">→</span></a>
 </div>
</div>

替換成 post 的摘要:

<div class="entry-content clearfix">
 <p>{{ post.excerpt }}</p>
 <div class="read-more cl-effect-14">
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="more-link">繼續(xù)閱讀 <span class="meta-nav">→</span></a>
 </div>
</div>

再次訪問首頁,它顯示:暫時(shí)還沒有發(fā)布的文章!好吧,做了這么多工作,但是數(shù)據(jù)庫中其實(shí)還沒有任何數(shù)據(jù)呀!接下來我們就實(shí)際寫幾篇文章保存到數(shù)據(jù)庫里,看看顯示的效果究竟如何。

 七、在Django Admin后臺發(fā)布文章

 在此之前我們完成了 Django 博客首頁視圖的編寫,我們希望首頁展示發(fā)布的博客文章列表,但是它卻抱怨:暫時(shí)還沒有發(fā)布的文章!如它所言,我們確實(shí)還沒有發(fā)布任何文章,本節(jié)我們將使用 Django 自帶的 Admin 后臺來發(fā)布我們的博客文章。

7.1.在Django后臺注冊模型

前面已經(jīng)用python manage.py createsuperuser,創(chuàng)建了超級用戶。

要在后臺注冊我們自己創(chuàng)建的幾個(gè)模型,這樣 Django Admin 才能知道它們的存在,注冊非常簡單,只需要在 blog\admin.py 中加入下面的代碼:

# blog/admin.py

from django.contrib import admin

from .models import Post,Category,Tag

admin.site.register(Post)
admin.site.register(Category)
admin.site.register(Tag)

運(yùn)行開發(fā)服務(wù)器,訪問 http://127.0.0.1:8000/admin/ ,就進(jìn)入了到了Django Admin 后臺登錄頁面,輸入剛才創(chuàng)建的管理員賬戶密碼就可以登錄到后臺了。

可以看到我們剛才注冊的三個(gè)模型了,點(diǎn)擊 Posts 后面的增加按鈕,將進(jìn)入添加 Post 的頁面,也就是新增博客文章。然后在相關(guān)的地方輸入一些測試用的內(nèi)容,增加完后點(diǎn)擊保存,這樣文章就添加完畢了,你也可以多添加幾篇看看效果。注意每篇文章必須有一個(gè)分類,在添加文章時(shí)你可以選擇已有分類。如果數(shù)據(jù)庫中還沒有分類,在選擇分類時(shí)點(diǎn)擊 Category 后面的 + 按鈕新增一個(gè)分類即可。

 訪問 http://127.0.0.1:8000/ 首頁,你就可以看到你添加的文章列表了,下面是我所在環(huán)境的效果圖:

7.2.定制Admin后臺

 在 admin post 列表頁面,我們只看到了文章的標(biāo)題,但是我們希望它顯示更加詳細(xì)的信息,這需要我們來定制 Admin 了,在 admin.py 添加如下代碼:

# blog/admin.py

from django.contrib import admin

from .models import Post,Category,Tag

class PostAdmin(admin.ModelAdmin):
 list_display = ['title', 'created_time', 'modified_time', 'category', 'author']

admin.site.register(Post,PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)

這里只是為了簡單地到達(dá)期望效果

刷新 Admin Post 列表頁面,可以看到顯示的效果好多了。

八、博客文章詳情頁

 首頁展示的是所有文章的列表,當(dāng)用戶看到感興趣的文章時(shí),他點(diǎn)擊文章的標(biāo)題或者繼續(xù)閱讀的按鈕,應(yīng)該跳轉(zhuǎn)到文章的詳情頁面來閱讀文章的詳細(xì)內(nèi)容。現(xiàn)在讓我們來開發(fā)博客的詳情頁面,有了前面的基礎(chǔ),開發(fā)流程都是一樣的了:首先配置 URL,即把相關(guān)的 URL 和視圖函數(shù)綁定在一起,然后實(shí)現(xiàn)視圖函數(shù),編寫模板并讓視圖函數(shù)渲染模板。

8.1.設(shè)置文章詳情頁的url

回顧一下我們首頁視圖的 URL,在 blog\urls.py 文件里,我們寫了:

blog/urls.py

from django.conf.urls import url

from . import views

urlpatterns = [
 url(r'^$', views.index, name='index'),
]

首頁視圖匹配的 URL 去掉域名后其實(shí)就是一個(gè)空的字符串。對文章詳情視圖而言,每篇文章對應(yīng)著不同的 URL。比如我們可以把文章詳情頁面對應(yīng)的視圖設(shè)計(jì)成這個(gè)樣子:當(dāng)用戶訪問 <網(wǎng)站域名>/post/1/ 時(shí),顯示的是第一篇文章的內(nèi)容,而當(dāng)用戶訪問 <網(wǎng)站域名>/post/2/ 時(shí),顯示的是第二篇文章的內(nèi)容,這里數(shù)字代表了第幾篇文章,也就是數(shù)據(jù)庫中 Post 記錄的 id 值。下面依照這個(gè)規(guī)則來綁定 URL 和視圖:

# blog/urls.py

from django.conf.urls import url
from . import views
app_name = 'blog'

urlpatterns = [
 url(r'^$',views.index,name='index'),
 url(r'^post/(?P<pk>[0-9]+)/$', views.detail, name='detail'),
]

Django 使用正則表達(dá)式來匹配用戶訪問的網(wǎng)址。這里 r'^post/(?P<pk>[0-9]+)/$' 整個(gè)正則表達(dá)式剛好匹配我們上面定義的 URL 規(guī)則。這條正則表達(dá)式的含義是,以 post/ 開頭,后跟一個(gè)至少一位數(shù)的數(shù)字,并且以 / 符號結(jié)尾,如 post/1/、 post/255/ 等都是符合規(guī)則的,[0-9]+ 表示一位或者多位數(shù)。此外這里 (?P<pk>[0-9]+) 表示命名捕獲組,其作用是從用戶訪問的 URL 里把括號內(nèi)匹配的字符串捕獲并作為關(guān)鍵字參數(shù)傳給其對應(yīng)的視圖函數(shù) detail。比如當(dāng)用戶訪問 post/255/ 時(shí)(注意 Django 并不關(guān)心域名,而只關(guān)心去掉域名后的相對 URL),被括起來的部分 (?P<pk>[0-9]+) 匹配 255,那么這個(gè) 255 會(huì)在調(diào)用視圖函數(shù) detail 時(shí)被傳遞進(jìn)去,實(shí)際上視圖函數(shù)的調(diào)用就是這個(gè)樣子:detail(request, pk=255)。我們這里必須從 URL 里捕獲文章的 id,因?yàn)橹挥羞@樣我們才能知道用戶訪問的究竟是哪篇文章。

此外我們通過 app_name='blog' 告訴 Django 這個(gè) urls.py 模塊是屬于 blog 應(yīng)用的,這種技術(shù)叫做視圖函數(shù)命名空間。我們看到 blog\urls.py 目前有兩個(gè)視圖函數(shù),并且通過 name 屬性給這些視圖函數(shù)取了個(gè)別名,分別是 index、detail。但是一個(gè)復(fù)雜的 Django 項(xiàng)目可能不止這些視圖函數(shù),例如一些第三方應(yīng)用中也可能有叫 index、detail 的視圖函數(shù),那么怎么把它們區(qū)分開來,防止沖突呢?方法就是通過 app_name 來指定命名空間,命名空間具體如何使用將在下面介紹。

為了方便地生成上述的 URL,我們在 Post 類里定義一個(gè) get_absolute_url方法,注意 Post 本身是一個(gè) Python 類,在類中我們是可以定義任何方法的。

blog/models.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse


class Post(models.Model):
 ...

 def __str__(self):
  return self.title

 # 自定義 get_absolute_url 方法
 # 記得從 django.urls 中導(dǎo)入 reverse 函數(shù)
 def get_absolute_url(self):
  return reverse('blog:detail', kwargs={'pk': self.pk})

注意到 URL 配置中的 url(r'^post/(?P<pk>[0-9]+)/$', views.detail, name='detail') ,我們設(shè)定的 name='detail' 在這里派上了用場??吹竭@個(gè) reverse 函數(shù),它的第一個(gè)參數(shù)的值是 'blog:detail',意思是 blog 應(yīng)用下的 name=detail 的函數(shù),由于我們在上面通過 app_name = 'blog' 告訴了 Django 這個(gè) URL 模塊是屬于 blog 應(yīng)用的,因此 Django 能夠順利地找到 blog 應(yīng)用下 name 為 detail 的視圖函數(shù),于是 reverse 函數(shù)會(huì)去解析這個(gè)視圖函數(shù)對應(yīng)的 URL,我們這里 detail 對應(yīng)的規(guī)則就是 post/(?P<pk>[0-9]+)/這個(gè)正則表達(dá)式,而正則表達(dá)式部分會(huì)被后面?zhèn)魅氲膮?shù) pk 替換,所以,如果 Post 的 id(或者 pk,這里 pk 和 id 是等價(jià)的) 是 255 的話,那么 get_absolute_url 函數(shù)返回的就是 /post/255/ ,這樣 Post 自己就生成了自己的 URL。

8.2.編寫detail視圖函數(shù)

 接下來就是實(shí)現(xiàn)我們的 detail 視圖函數(shù)了:

# blog/views.py

from django.shortcuts import render,get_object_or_404
from . models import Post

def index(request):
 post_list = Post.objects.all().order_by('-created_time')
 return render(request,'blog/index.html',{'post_list':post_list})

def detail(request,pk):
 post = get_object_or_404(Post,pk=pk)
 return render(request,'blog/detail.html',{'post':post})

視圖函數(shù)很簡單,它根據(jù)我們從 URL 捕獲的文章 id(也就是 pk,這里 pk 和 id 是等價(jià)的)獲取數(shù)據(jù)庫中文章 id 為該值的記錄,然后傳遞給模板。注意這里我們用到了從 django.shortcuts 模塊導(dǎo)入的 get_object_or_404 方法,其作用就是當(dāng)傳入的 pk 對應(yīng)的 Post 在數(shù)據(jù)庫存在時(shí),就返回對應(yīng)的 post,如果不存在,就給用戶返回一個(gè) 404 錯(cuò)誤,表明用戶請求的文章不存在。

8.3.編寫詳情頁模板

接下來就是書寫模板文件,從下載的博客模板中把 single.html 拷貝到 templates\blog 目錄下(和 index.html 在同一級目錄),然后改名為 detail.html。

在 index 頁面博客文章列表的標(biāo)題和繼續(xù)閱讀按鈕寫上超鏈接跳轉(zhuǎn)的鏈接,即文章 post 對應(yīng)的詳情頁的 URL,讓用戶點(diǎn)擊后可以跳轉(zhuǎn)到 detail 頁面:

 <article class="post post-{{ post.pk }}">
     <header class="entry-header">
      <h1 class="entry-title">
       <a href="{{ post.get_absolute_url }}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.title }}</a>
      </h1>
      <div class="entry-meta">
       <span class="post-category"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.category.name }}</a></span>
       <span class="post-date"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><time class="entry-date"
                  datetime="{{ post.created_time }}">{{ post.created_time }}</time></a></span>
       <span class="post-author"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.author }}</a></span>
       <span class="comments-link"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4 評論</a></span>
       <span class="views-count"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >588 閱讀</a></span>
      </div>
     </header>
     <div class="entry-content clearfix">
      <p>{{ post.excerpt }}</p>
      <div class="read-more cl-effect-14">
       <a href="{{ post.get_absolute_url }}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="more-link">繼續(xù)閱讀 <span class="meta-nav">→</span></a>
      </div>
     </div>
    </article>

這里我們修改兩個(gè)地方,第一個(gè)是文章標(biāo)題處:

<h1 class="entry-title">
 <a href="{{ post.get_absolute_url }}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.title }}</a>
</h1>

我們把 a 標(biāo)簽的 href 屬性的值改成了 {{ post.get_absolute_url }}。回顧一下模板變量的用法,由于 get_absolute_url 這個(gè)方法(我們定義在 Post 類中的)返回的是 post 對應(yīng)的 URL,因此這里 {{ post.get_absolute_url }} 最終會(huì)被替換成該 post 自身的 URL。

同樣,第二處修改的是繼續(xù)閱讀按鈕的鏈接:

<a href="{{ post.get_absolute_url }}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="more-link">繼續(xù)閱讀 <span class="meta-nav">→</span>
</a>

這樣當(dāng)我們點(diǎn)擊首頁文章的標(biāo)題或者繼續(xù)閱讀按鈕后就會(huì)跳轉(zhuǎn)到該篇文章對應(yīng)的詳情頁面了。然而如果你嘗試跳轉(zhuǎn)到詳情頁后,你會(huì)發(fā)現(xiàn)樣式是亂的。這在 真正的 Django 博客首頁 時(shí)講過,由于我們是直接復(fù)制的模板,還沒有正確地處理靜態(tài)文件。我們可以按照介紹過的方法修改靜態(tài)文件的引入路徑,但很快你會(huì)發(fā)現(xiàn)在任何頁面都是需要引入這些靜態(tài)文件,如果每個(gè)頁面都要修改會(huì)很麻煩,而且代碼都是重復(fù)的。下面就介紹 Django 模板繼承的方法來幫我們消除這些重復(fù)操作。

8.4.模板繼承

我們看到 index.html 文件和 detail.html 文件除了 main 標(biāo)簽包裹的部分不同外,其它地方都是相同的,我們可以把相同的部分抽取出來,放到 base.html 里。首先在 templates\ 目錄下新建一個(gè) base.html 文件

把 index.html 的內(nèi)容全部拷貝到 base.html 文件里,然后刪掉 main 標(biāo)簽包裹的內(nèi)容,替換成如下的內(nèi)容。

templates/base.html

...
<main class="col-md-8">
 {% block main %}
 {% endblock main %}
</main>
<aside class="col-md-4">
 {% block toc %}
 {% endblock toc %}
 ...
</aside>
...

這里 block 也是一個(gè)模板標(biāo)簽,其作用是占位。比如這里的 {% block main %}{% endblock main %} 是一個(gè)占位框,main 是我們給這個(gè) block 取的名字。下面我們會(huì)看到 block 標(biāo)簽的作用。同時(shí)我們也在 aside 標(biāo)簽下加了一個(gè) {% block toc %}{% endblock toc %} 占位框,因?yàn)?detail.html 中 aside 標(biāo)簽下會(huì)多一個(gè)目錄欄。當(dāng) {% block toc %}{% endblock toc %} 中沒有任何內(nèi)容時(shí),{% block toc %}{% endblock toc %} 在模板中不會(huì)顯示。但當(dāng)其中有內(nèi)容是,模板就會(huì)顯示 block 中的內(nèi)容。

在 index.html 里,我們在文件最頂部使用 {% extends 'base.html' %} 繼承 base.html,這樣就把 base.html 里的代碼繼承了過來,另外在 {% block main %}{% endblock main %} 包裹的地方填上 index 頁面應(yīng)該顯示的內(nèi)容:

templates/blog/index.html

{% extends 'blog/base.html' %}

{% block main %}
 {% for post in post_list %}
  <article class="post post-1">
   ...
  </article>
 {% empty %}
  <div class="no-post">暫時(shí)沒有發(fā)布文章!</div>
 {% endfor %}
 <!-- 簡單分頁效果
 <div class="pagination-simple">
  <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >上一頁</a>
  <span class="current">第 6 頁 / 共 11 頁</span>
  <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下一頁</a>
 </div>
 -->
 <div class="pagination">
  ...
 </div>
{% endblock main %}

這樣 base.html 里的代碼加上 {% block main %}{% endblock main %} 里的代碼就和最開始 index.html 里的代碼一樣了。這就是模板繼承的作用,公共部分的代碼放在 base.html 里,而其它頁面不同的部分通過替換 {% block main %}{% endblock main %} 占位標(biāo)簽里的內(nèi)容即可。

如果你對這種模板繼承還是有點(diǎn)糊涂,可以把這種繼承和 Python 中類的繼承類比。base.html 就是父類,index.html 就是子類。index.html 繼承了 base.html 中的全部內(nèi)容,同時(shí)它自身還有一些內(nèi)容,這些內(nèi)容就通過 “覆寫” {% block main %}{% endblock main %}(把 block 看做是父類的屬性)的內(nèi)容添加即可。

detail 頁面處理起來就簡單了,同樣繼承 base.html ,在 {% block main %}{% endblock main %} 里填充 detail.html 頁面應(yīng)該顯示的內(nèi)容,以及在 {% block toc %}{% endblock toc %} 中填寫 base.html 中沒有的目錄部分的內(nèi)容。不過目前的目錄只是占位數(shù)據(jù),我們在以后會(huì)實(shí)現(xiàn)如何從文章中自動(dòng)摘取目錄。

templates/blog/detail.html

{% extends 'blog/base.html' %}

{% block main %}
 <article class="post post-1">
  ...
 </article>
 <section class="comment-area">
  ...
 </section>
{% endblock main %}
{% block toc %}
 <div class="widget widget-content">
  <h3 class="widget-title">文章目錄</h3>
  <ul>
   <li>
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >教程特點(diǎn)</a>
   </li>
   <li>
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >誰適合這個(gè)教程</a>
   </li>
   <li>
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >在線預(yù)覽</a>
   </li>
   <li>
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >資源列表</a>
   </li>
   <li>
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >獲取幫助</a>
   </li>
  </ul>
 </div>
{% endblock toc %}

修改 article 標(biāo)簽下的一些內(nèi)容,讓其顯示文章的實(shí)際數(shù)據(jù):

<article class="post post-{{ post.pk }}">
 <header class="entry-header">
 <h1 class="entry-title">{{ post.title }}</h1>
 <div class="entry-meta">
  <span class="post-category"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.category.name }}</a></span>
  <span class="post-date"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><time class="entry-date"
            datetime="{{ post.created_time }}">{{ post.created_time }}</time></a></span>
  <span class="post-author"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ post.author }}</a></span>
  <span class="comments-link"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4 評論</a></span>
  <span class="views-count"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >588 閱讀</a></span>
 </div>
 </header>
 <div class="entry-content clearfix">
 {{ post.body }}
 </div>
</article>

再次從首頁點(diǎn)擊一篇文章的標(biāo)題或者繼續(xù)閱讀按鈕跳轉(zhuǎn)到詳情頁面,可以看到預(yù)期效果了!

 九、支持Markdown語法和代碼高亮

 為了讓博客文章具有良好的排版,顯示更加豐富的格式,我們使用 Markdown 語法來書寫我們的博文。Markdown 是一種 HTML 文本標(biāo)記語言,只要遵循它約定的語法格式,Markdown 的渲染器就能夠把我們寫的文章轉(zhuǎn)換為標(biāo)準(zhǔn)的 HTML 文檔,從而讓我們的文章呈現(xiàn)更加豐富的格式,例如標(biāo)題、列表、代碼塊等等 HTML 元素。由于 Markdown 語法簡單直觀,不用超過 5 分鐘就可以掌握常用的標(biāo)記語法,因此大家青睞使用 Markdown 書寫 HTML 文檔。下面讓我們的博客也支持使用 Markdown 書寫。

相關(guān)文章

  • Python字典對象實(shí)現(xiàn)原理詳解

    Python字典對象實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Python字典對象實(shí)現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python的reverse函數(shù)翻轉(zhuǎn)結(jié)果為None的問題

    python的reverse函數(shù)翻轉(zhuǎn)結(jié)果為None的問題

    這篇文章主要介紹了python的reverse函數(shù)翻轉(zhuǎn)結(jié)果為None的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 使用Python實(shí)現(xiàn)Oracle數(shù)據(jù)庫自動(dòng)巡檢程序

    使用Python實(shí)現(xiàn)Oracle數(shù)據(jù)庫自動(dòng)巡檢程序

    這篇文章主要為大家詳細(xì)介紹了如何創(chuàng)建一個(gè)Oracle數(shù)據(jù)庫自動(dòng)巡檢程序,以確保數(shù)據(jù)庫的順暢運(yùn)行,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • 關(guān)于Python的Thread線程模塊詳解

    關(guān)于Python的Thread線程模塊詳解

    這篇文章主要介紹了關(guān)于Python的Thread線程模塊詳解,進(jìn)程是程序的一次執(zhí)行,每個(gè)進(jìn)程都有自己的地址空間、內(nèi)存、數(shù)據(jù)棧以及其他記錄其運(yùn)行的輔助數(shù)據(jù),需要的朋友可以參考下
    2023-05-05
  • Python簡單生成隨機(jī)姓名的方法示例

    Python簡單生成隨機(jī)姓名的方法示例

    這篇文章主要介紹了Python簡單生成隨機(jī)姓名的方法,結(jié)合實(shí)例形式分析了Python基于random模塊生成隨機(jī)字符串組合的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Python深度學(xué)習(xí)之使用Albumentations對圖像做增強(qiáng)

    Python深度學(xué)習(xí)之使用Albumentations對圖像做增強(qiáng)

    諸如RandomCrop和CenterCrop之類的某些增強(qiáng)功能可能會(huì)變換圖像,使其不包含所有原始邊界框. 本示例說明如何使用名為RandomSizedBBoxSafeCrop的變換來裁剪圖像的一部分,但保留原始圖像的所有邊界框,需要的朋友可以參考下
    2021-05-05
  • Python利用pynput實(shí)現(xiàn)劃詞復(fù)制功能

    Python利用pynput實(shí)現(xiàn)劃詞復(fù)制功能

    這篇文章主要為大家想詳細(xì)介紹了Python如何利用pynput實(shí)現(xiàn)劃詞復(fù)制功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • 七牛云的python sdk 批量刪除資源的操作方法

    七牛云的python sdk 批量刪除資源的操作方法

    今天做項(xiàng)目的時(shí)候用到七牛云,關(guān)于對資源的操作是在后端做的,用的SDK,這篇文章主要介紹了七牛云的python sdk 是如何 批量刪除資源的,需要的朋友可以參考下
    2021-10-10
  • Python不使用庫進(jìn)行矩陣運(yùn)算詳解

    Python不使用庫進(jìn)行矩陣運(yùn)算詳解

    這篇文章主要介紹了Python不使用庫進(jìn)行矩陣運(yùn)算詳解,矩陣乘法中,需要判斷兩個(gè)矩陣是否可以進(jìn)行相乘,即前一個(gè)矩陣的列是否等于后一個(gè)矩陣的行,,需要的朋友可以參考下
    2023-08-08
  • Python中對數(shù)組集進(jìn)行按行打亂shuffle的方法

    Python中對數(shù)組集進(jìn)行按行打亂shuffle的方法

    今天小編就為大家分享一篇Python中對數(shù)組集進(jìn)行按行打亂shuffle的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11

最新評論

欧美aa一级一区三区四区| 女人精品内射国产99| 欧美日本在线观看一区二区 | 五月婷婷在线观看视频免费| 3D动漫精品啪啪一区二区下载| av俺也去在线播放| 中文字幕 亚洲av| 成人资源在线观看免费官网| 欧美亚洲国产成人免费在线 | 精品人妻每日一部精品| 亚洲 中文字幕在线 日韩| 最新黄色av网站在线观看| 亚洲精品ww久久久久久| 性感美女高潮视频久久久| 久久99久久99精品影院| 福利视频一区二区三区筱慧| 不卡一不卡二不卡三| 日韩精品二区一区久久| 自拍偷拍亚洲精品第2页| 3344免费偷拍视频| 在线免费观看欧美小视频| 国产综合高清在线观看| 成人av免费不卡在线观看| 99久久99一区二区三区| 国产内射中出在线观看| 人妻少妇av在线观看| 成人色综合中文字幕| 春色激情网欧美成人| 国产va在线观看精品| 精品视频一区二区三区四区五区| 在线观看视频网站麻豆| 亚洲精品亚洲人成在线导航| 操人妻嗷嗷叫视频一区二区| 中文乱理伦片在线观看| 2021久久免费视频| 人妻久久久精品69系列| 18禁免费av网站| 国产精品成人xxxx| 99国内小视频在现欢看| 中文字幕一区二 区二三区四区| 久久精品亚洲成在人线a| 中文字幕第一页国产在线| 偷拍3456eee| 黄色无码鸡吧操逼视频| 人妻丰满熟妇综合网| 欧美日韩v中文在线| 护士特殊服务久久久久久久| 日日爽天天干夜夜操| 亚洲乱码中文字幕在线| 福利在线视频网址导航| 亚洲精品三级av在线免费观看| 午夜精品福利91av| 精品国产亚洲av一淫| 国产黄色高清资源在线免费观看| 成人区人妻精品一区二视频| 又色又爽又黄的美女裸体| 97瑟瑟超碰在线香蕉| 伊人开心婷婷国产av| 人妻少妇精品久久久久久| 一区二区三区四区视频在线播放| 日韩黄色片在线观看网站| 特大黑人巨大xxxx| 丝袜长腿第一页在线| 久久这里有免费精品| 国产又大又黄免费观看| 夜夜嗨av蜜臀av| 亚洲精品乱码久久久久久密桃明| 97人人模人人爽人人喊| 午夜在线精品偷拍一区二| 国产女人露脸高潮对白视频| 538精品在线观看视频| 亚洲综合另类欧美久久| 欧美国品一二三产区区别| 天天爽夜夜爽人人爽QC| 国产高清女主播在线| gogo国模私拍视频| 农村胖女人操逼视频| 欧美成人综合色在线噜噜| 大胆亚洲av日韩av| 亚洲av香蕉一区区二区三区犇| 99热99这里精品6国产| 日本一区美女福利视频| 亚洲最大黄了色网站| 任你操视频免费在线观看| 护士小嫩嫩又紧又爽20p| av天堂中文字幕最新| 57pao国产一区二区| 久久久人妻一区二区| 国产精品久久久久国产三级试频| 97国产在线av精品| 亚洲av无女神免非久久| 国产亚洲欧美45p| 美味人妻2在线播放| 久久久噜噜噜久久熟女av| 香蕉aⅴ一区二区三区| 人人人妻人人澡人人| 国产黄色a级三级三级三级| 亚洲精品成人网久久久久久小说 | 在线国产中文字幕视频| 精品区一区二区三区四区人妻| 亚洲一区av中文字幕在线观看| 欧美熟妇一区二区三区仙踪林| 大香蕉玖玖一区2区| 久久精品国产亚洲精品166m| 国产密臀av一区二区三| 女生自摸在线观看一区二区三区| 五十路丰满人妻熟妇| 自拍偷区二区三区麻豆| 51国产偷自视频在线播放| 老有所依在线观看完整版| 一区二区三区视频,福利一区二区| 老师让我插进去69AV| 大鸡巴插入美女黑黑的阴毛| 精品久久久久久久久久中文蒉| 免费国产性生活视频| 成年人免费看在线视频| 少妇高潮无套内谢麻豆| 欧美一区二区三区乱码在线播放 | 国产老熟女伦老熟妇ⅹ| 日韩成人免费电影二区| 农村胖女人操逼视频| 中国产一级黄片免费视频播放| 国产美女一区在线观看| 日本丰满熟妇BBXBBXHD| 午夜精品福利91av| 天天射夜夜操狠狠干| 一区二区熟女人妻视频| 新97超碰在线观看| 9色精品视频在线观看| 久久永久免费精品人妻专区| 中文字幕日韩人妻在线三区| 孕妇奶水仑乱A级毛片免费看| 精品国产高潮中文字幕| 青青青青在线视频免费观看| 中文字幕av熟女人妻| 午夜激情久久不卡一区二区| 日韩欧美国产一区不卡| 在线免费观看视频一二区| 日韩一个色综合导航| 99久久久无码国产精品性出奶水| 成人免费公开视频无毒| 日韩近亲视频在线观看| 亚洲熟妇x久久av久久| 在线观看视频一区麻豆| 亚洲精品av在线观看| 韩国黄色一级二级三级| 日韩欧美在线观看不卡一区二区| 被大鸡吧操的好舒服视频免费| 日本在线一区二区不卡视频| 黄色视频在线观看高清无码 | 伊人综合免费在线视频| 91天堂天天日天天操| 天天做天天干天天舔| 国产伊人免费在线播放| 国产精品成人xxxx| 免费在线看的黄片视频| 国产精品日韩欧美一区二区| 国产精品视频男人的天堂| 免费啪啪啪在线观看视频| 精品高跟鞋丝袜一区二区| 夜夜骑夜夜操夜夜奸| 视频一区二区三区高清在线| av在线免费观看亚洲天堂| 蜜桃视频17c在线一区二区| 精品国产污污免费网站入口自| 91九色porny蝌蚪国产成人| 韩国三级aaaaa高清视频| 早川濑里奈av黑人番号| 插小穴高清无码中文字幕| 绝顶痉挛大潮喷高潮无码| 韩国AV无码不卡在线播放| 欧美中国日韩久久精品| 91人妻精品一区二区在线看| 欧洲日韩亚洲一区二区三区| 日本精品一区二区三区在线视频。 | 91啪国自产中文字幕在线| 97国产在线av精品| 一级黄片久久久久久久久| 99精品久久久久久久91蜜桃| 自拍偷拍 国产资源| AV无码一区二区三区不卡| 中文字幕日韩精品就在这里| 超级碰碰在线视频免费观看| 日韩三级电影华丽的外出| 国产精品黄页网站视频| 中文字幕av第1页中文字幕| 北条麻妃高跟丝袜啪啪| 天天干天天日天天干天天操| 亚洲精品 日韩电影| 亚洲国产欧美国产综合在线| 精品乱子伦一区二区三区免费播| 农村胖女人操逼视频| 亚洲激情偷拍一区二区| 97a片免费在线观看| 午夜影院在线观看视频羞羞羞| 国产黄色a级三级三级三级| 人人爱人人妻人人澡39| 手机看片福利盒子日韩在线播放| 欧美精品 日韩国产| 男人的天堂在线黄色| 久久丁香花五月天色婷婷| 免费在线看的黄网站| 午夜美女少妇福利视频| 爱有来生高清在线中文字幕| 亚洲精品国产久久久久久| huangse网站在线观看| 日韩无码国产精品强奸乱伦| 熟女视频一区,二区,三区| 欧洲国产成人精品91铁牛tv| 国产精品久久久久网| 国产a级毛久久久久精品| 欧美亚洲国产成人免费在线 | 黑人变态深video特大巨大| 日日日日日日日日夜夜夜夜夜夜| 91色网站免费在线观看| 天天色天天操天天舔| 国产在线91观看免费观看| 亚洲天堂有码中文字幕视频| 国产精品久久综合久久| 中国无遮挡白丝袜二区精品| 黑人性生活视频免费看| 亚洲伊人久久精品影院一美女洗澡| 99精品亚洲av无码国产另类| 五十路人妻熟女av一区二区 | gav成人免费播放| 97成人免费在线观看网站| 成年人中文字幕在线观看| 男人和女人激情视频| 亚洲熟妇久久无码精品| 干逼又爽又黄又免费的视频| 国产视频在线视频播放| 国产av国片精品一区二区| 2020av天堂网在线观看| 夜女神免费福利视频| 天天躁夜夜躁日日躁a麻豆| 久久免看30视频口爆视频| 日韩欧美一级aa大片| 最新的中文字幕 亚洲| 我想看操逼黄色大片| 边摸边做超爽毛片18禁色戒 | 欧美性感尤物人妻在线免费看| 欧美视频不卡一区四区| 久久这里只有精品热视频| 天天日天天干天天要| 亚洲最大黄 嗯色 操 啊| 在线网站你懂得老司机| 一区二区三区 自拍偷拍| 欧美第一页在线免费观看视频| 啊啊好慢点插舔我逼啊啊啊视频| 青青青青青免费视频| 亚洲2021av天堂| 啊啊啊视频试看人妻| 成人区人妻精品一区二视频| 日本黄在免费看视频| 久久三久久三久久三久久| 中文字幕高清资源站| 成人免费做爰高潮视频| 国产精品女邻居小骚货| 大鸡吧插逼逼视频免费看| 成人精品视频99第一页| 99婷婷在线观看视频| 91精品免费久久久久久| 91人妻人人做人人爽在线| 绝顶痉挛大潮喷高潮无码 | 99热久久这里只有精品| 青青草成人福利电影| 日韩a级精品一区二区| 91片黄在线观看喷潮| 欧美亚洲少妇福利视频| 天天艹天天干天天操| 国产女人叫床高潮大片视频| 四川五十路熟女av| 亚洲 中文 自拍 另类 欧美| 一区二区三区国产精选在线播放| 亚洲精品成人网久久久久久小说 | 欧美韩国日本国产亚洲| 成人蜜桃美臀九一一区二区三区| 亚洲av极品精品在线观看| 91天堂精品一区二区| 亚洲超碰97人人做人人爱| 哥哥姐姐综合激情小说| 日韩av有码中文字幕| 婷婷色国产黑丝少妇勾搭AV | 亚洲欧美福利在线观看| 四川乱子伦视频国产vip| 亚洲精品福利网站图片| 色婷婷综合激情五月免费观看| 视频一区 视频二区 视频| 97国产在线观看高清| 粉嫩av蜜乳av蜜臀| 一区二区三区日韩久久| 2012中文字幕在线高清| 亚国产成人精品久久久| 国产又粗又猛又爽又黄的视频在线| yellow在线播放av啊啊啊| 淫秽激情视频免费观看| 精内国产乱码久久久久久| 国产精品国产精品一区二区| 91亚洲国产成人精品性色| 热久久只有这里有精品| 五月激情婷婷久久综合网| 天天干天天爱天天色| 日本性感美女视频网站| 青青操免费日综合视频观看| 国产精品黄片免费在线观看| 亚洲一级 片内射视正片| 一区二区在线观看少妇| 男女第一次视频在线观看| 老司机福利精品免费视频一区二区 | 蜜臀av久久久久久久| okirakuhuhu在线观看| 亚洲1069综合男同| 青青青激情在线观看视频| 欧美精品伦理三区四区| 亚洲免费成人a v| 亚洲男人的天堂a在线| 免费看国产又粗又猛又爽又黄视频| 国产chinesehd精品麻豆| 精品成人啪啪18免费蜜臀| 国产日本精品久久久久久久| 国产97视频在线精品| 亚洲欧洲一区二区在线观看| 黄色片黄色片wyaa| 国产黄色片蝌蚪九色91| 亚洲天天干 夜夜操| 欧美3p在线观看一区二区三区| 97国产精品97久久| 99精品免费久久久久久久久a| 欧美在线一二三视频| 色狠狠av线不卡香蕉一区二区| 日本熟妇丰满厨房55| 精品老妇女久久9g国产| 中文字幕1卡1区2区3区| 视频 国产 精品 熟女 | 黄色片年轻人在线观看| 日本一本午夜在线播放| 日本少妇精品免费视频| 水蜜桃一区二区三区在线观看视频| 1000部国产精品成人观看视频| 天堂中文字幕翔田av| 日韩成人性色生活片| 1024久久国产精品| 久久久久国产成人精品亚洲午夜| 亚洲国产在线精品国偷产拍| 白白操白白色在线免费视频| 9l人妻人人爽人人爽| 五色婷婷综合狠狠爱| 蜜臀av久久久久久久| 国产普通话插插视频| 中国黄片视频一区91| 中文字幕免费在线免费| 日本欧美视频在线观看三区| 国产精品视频欧美一区二区| 国产成人精品亚洲男人的天堂| 人人妻人人人操人人人爽| 91免费黄片可看视频 | av在线播放国产不卡| 久久久超爽一二三av| 青青尤物在线观看视频网站| 天天色天天操天天透| 中文字幕,亚洲人妻| 夜夜嗨av一区二区三区中文字幕| 夜色17s精品人妻熟女| 午夜精品亚洲精品五月色| 亚洲天堂精品久久久| 夜色撩人久久7777| 被大鸡吧操的好舒服视频免费| 亚洲视频在线观看高清| 午夜美女少妇福利视频| 91久久人澡人人添人人爽乱| 三级等保密码要求条款| 日本18禁久久久久久| 精品视频中文字幕在线播放| 大胸性感美女羞爽操逼毛片| 天天日天天舔天天射进去| aⅴ五十路av熟女中出| 久久久制服丝袜中文字幕| 农村胖女人操逼视频| 最新国产精品网址在线观看| 免费十精品十国产网站| 色狠狠av线不卡香蕉一区二区| 天天插天天色天天日| 成人免费做爰高潮视频| 一级黄片大鸡巴插入美女 | 3D动漫精品啪啪一区二区下载| 中文字幕一区的人妻欧美日韩| 超污视频在线观看污污污| 亚洲另类伦春色综合小| aiss午夜免费视频| 国产精品中文av在线播放 | 国产chinesehd精品麻豆| 日本午夜爽爽爽爽爽视频在线观看 | 精品一区二区三区欧美| 中文字幕av第1页中文字幕| 福利视频网久久91| 91麻豆精品传媒国产黄色片| 中文字幕1卡1区2区3区| 免费在线播放a级片| 99的爱精品免费视频| 韩国男女黄色在线观看| 国产日本欧美亚洲精品视| 国产精品久久久久久久精品视频| 成人蜜臀午夜久久一区| 黄色在线观看免费观看在线| 日日夜夜狠狠干视频| 日噜噜噜夜夜噜噜噜天天噜噜噜| 亚洲狠狠婷婷综合久久app| 久久精品亚洲成在人线a| 视频久久久久久久人妻| 国产福利在线视频一区| 特级欧美插插插插插bbbbb| av日韩在线免费播放| 午夜精品福利一区二区三区p| 中文 成人 在线 视频| 天天躁日日躁狠狠躁躁欧美av| 人妻熟女中文字幕aⅴ在线| 日本欧美视频在线观看三区| 国产精品久久久久久久女人18| 青青青激情在线观看视频| 中文亚洲欧美日韩无线码| 日本乱人一区二区三区| 老师让我插进去69AV| 色综合久久无码中文字幕波多| 亚洲高清自偷揄拍自拍| 国产精品女邻居小骚货| 80电影天堂网官网| 天天夜天天日天天日| 亚洲成人精品女人久久久| 亚洲另类综合一区小说| 2022国产精品视频| 91成人精品亚洲国产| 4个黑人操素人视频网站精品91| 55夜色66夜色国产精品站| wwwxxx一级黄色片| 亚洲av第国产精品| 天天艹天天干天天操| 久久久久久cao我的性感人妻 | 亚洲熟女女同志女同| 欧美日韩激情啪啪啪| 亚洲激情,偷拍视频| 天天操天天干天天日狠狠插 | 天天操夜夜骑日日摸| 99精品视频在线观看免费播放| 熟女91pooyn熟女| 免费国产性生活视频| 抽查舔水白紧大视频| 18禁美女羞羞免费网站| 蜜桃色婷婷久久久福利在线| 精品久久久久久久久久中文蒉| 欧美一区二区中文字幕电影| 美女大bxxxx内射| 老司机福利精品视频在线| 天天做天天干天天舔| 五十路在线观看完整版| 中文字幕日韩精品就在这里| 亚洲一级av大片免费观看| aaa久久久久久久久| 国产品国产三级国产普通话三级| 天天色天天爱天天爽| 日本av高清免费网站| 综合国产成人在线观看| 偷拍3456eee| 少妇一区二区三区久久久| 沙月文乃人妻侵犯中文字幕在线| 大香蕉伊人中文字幕| 欧美男人大鸡吧插女人视频| 久久久噜噜噜久久熟女av| 在线观看免费岛国av| 欧美亚洲少妇福利视频| 果冻传媒av一区二区三区 | 天天日天天鲁天天操| 欧美在线偷拍视频免费看| 任我爽精品视频在线播放| 最近中文字幕国产在线| 69精品视频一区二区在线观看| 天天操天天干天天日狠狠插| 人人爽亚洲av人人爽av| 久久久久久99国产精品| 国产不卡av在线免费| 亚洲欧美激情国产综合久久久 | 98视频精品在线观看| 四虎永久在线精品免费区二区| 中国视频一区二区三区| 日本福利午夜电影在线观看| 女生自摸在线观看一区二区三区 | 中文字幕奴隷色的舞台50| 欧美一区二区三区在线资源| 国产大学生援交正在播放| 91久久人澡人人添人人爽乱| 亚洲男人的天堂a在线| 91极品大一女神正在播放| 成年人中文字幕在线观看| 制服丝袜在线人妻中文字幕| 亚洲国产成人av在线一区| 精品国产午夜视频一区二区| 成年人黄色片免费网站| 国产自拍黄片在线观看| 麻豆性色视频在线观看| 久久精品国产999| 国产变态另类在线观看| 真实国模和老外性视频| 成人影片高清在线观看| 天天日天天爽天天爽| 白白操白白色在线免费视频 | 久久香蕉国产免费天天| 97欧洲一区二区精品免费| 啊啊啊想要被插进去视频| 成人H精品动漫在线无码播放| 91破解版永久免费| 97超碰人人搞人人| 亚洲青青操骚货在线视频| 欧美爆乳肉感大码在线观看| wwwxxx一级黄色片| 天堂女人av一区二区| 狠狠的往里顶撞h百合| 日本人竟这样玩学生妹| 国产精品福利小视频a| 欧美美女人体视频一区| 亚洲欧美在线视频第一页| 欧美一区二区三区乱码在线播放 | 孕妇奶水仑乱A级毛片免费看| 99久久99一区二区三区| 精品一区二区亚洲欧美| 哥哥姐姐综合激情小说| 中文字幕一区二 区二三区四区| 自拍偷区二区三区麻豆| 99久久99久国产黄毛片| 亚洲精品高清自拍av| 亚洲av色香蕉一区二区三区| 亚洲国际青青操综合网站| 2019av在线视频| 91色网站免费在线观看| 特大黑人巨大xxxx| 欧美爆乳肉感大码在线观看 | 538精品在线观看视频| 一区国内二区日韩三区欧美| 99久久超碰人妻国产| 这里有精品成人国产99| 天天日天天干天天搡| 亚洲精品av在线观看| 中文字幕无码日韩专区免费| 亚洲美女高潮喷浆视频| 精品91高清在线观看| 97国产在线av精品| 18禁精品网站久久| 日辽宁老肥女在线观看视频| 啪啪啪啪啪啪啪啪啪啪黄色| 国产精品黄大片在线播放| 香港三日本三韩国三欧美三级| www日韩毛片av| 亚洲欧美一区二区三区电影| 亚洲国产精品久久久久久6| 91av中文视频在线| 91九色porny国产在线| 晚上一个人看操B片| 又黄又刺激的午夜小视频| 人妻av无码专区久久绿巨人| 亚洲高清国产一区二区三区| 3D动漫精品啪啪一区二区下载| av乱码一区二区三区| 9l人妻人人爽人人爽| 成人国产影院在线观看| 91‖亚洲‖国产熟女| 日韩a级黄色小视频| 11久久久久久久久久久| 日韩中文字幕精品淫| 国产精品久久久黄网站| 国产日韩精品免费在线| 亚洲欧美人精品高清| 日韩欧美一级aa大片| 国产黄网站在线观看播放| 香蕉av影视在线观看| 亚洲另类伦春色综合小| 日韩一个色综合导航| 成人伊人精品色xxxx视频| 伊拉克及约旦宣布关闭领空| 日韩欧美制服诱惑一区在线| 久久久极品久久蜜桃| 动色av一区二区三区| 天天摸天天干天天操科普| 国产福利小视频免费观看| 视频 国产 精品 熟女 | 成人H精品动漫在线无码播放| 亚洲午夜电影在线观看| 色综合色综合色综合色| 欧美男同性恋69视频| 国产日韩精品一二三区久久久| 一色桃子久久精品亚洲| 日韩伦理短片在线观看| 最新国产亚洲精品中文在线| 在线新三级黄伊人网| 男人在床上插女人视频| 日本阿v视频在线免费观看| 精品亚洲在线免费观看| 大胆亚洲av日韩av| 亚洲欧美一卡二卡三卡| 国产第一美女一区二区三区四区| 日本人妻欲求不满中文字幕| 国产亚洲欧美45p| 国产成人精品福利短视频| 亚欧在线视频你懂的| 男女啪啪视频免费在线观看| 亚洲人成精品久久久久久久| 欧美精品资源在线观看| 亚洲天堂有码中文字幕视频| 欧美久久久久久三级网| 2018最新中文字幕在线观看| 一个色综合男人天堂| 亚洲 中文 自拍 另类 欧美| 免费手机黄页网址大全| 中国产一级黄片免费视频播放| 国产精品久久久久网| 成年女人免费播放视频| 日本熟妇一区二区x x| 亚欧在线视频你懂的| 偷拍自拍亚洲视频在线观看| 亚洲 欧美 精品 激情 偷拍| 在线可以看的视频你懂的 | 中国无遮挡白丝袜二区精品 | 午夜久久久久久久精品熟女| 操日韩美女视频在线免费看| 国产内射中出在线观看| 国产又粗又硬又猛的毛片视频| 免费看高清av的网站| 中文字幕一区二区亚洲一区| 一区二区三区四区视频在线播放 | 中国把吊插入阴蒂的视频| 欧洲日韩亚洲一区二区三区| 顶级尤物粉嫩小尤物网站| 内射久久久久综合网| 久久亚洲天堂中文对白| 天天摸天天亲天天舔天天操天天爽 | 国产亚洲欧美45p| 国产又粗又猛又爽又黄的视频美国| 亚洲图片欧美校园春色| 91国内精品久久久久精品一| 热思思国产99re| 在线免费观看国产精品黄色| 青青青国产免费视频| 北条麻妃肉色丝袜视频| 免费在线观看视频啪啪| 我想看操逼黄色大片| 免费黄高清无码国产| 91精品一区二区三区站长推荐| 婷婷午夜国产精品久久久| 亚洲精品中文字幕下载| 亚洲一区二区三区久久午夜 | 日本高清在线不卡一区二区| 最新91九色国产在线观看| av久久精品北条麻妃av观看| 人妻丝袜诱惑我操她视频| 亚洲综合图片20p| 日本后入视频在线观看| 日韩欧美在线观看不卡一区二区 | 日本少妇在线视频大香蕉在线观看| 成人动漫大肉棒插进去视频| 黄色成年网站午夜在线观看| 岛国黄色大片在线观看| 亚洲国产成人无码麻豆艾秋| 欧美地区一二三专区| 91久久国产成人免费网站| 国产精品国色综合久久 | 久久这里只有精彩视频免费| 一级A一级a爰片免费免会员| 亚洲美女自偷自拍11页| 日本xx片在线观看| 日韩欧美中文国产在线| 大陆精品一区二区三区久久| 老司机99精品视频在线观看| 免费在线看的黄网站| 91天堂天天日天天操| 成人高清在线观看视频| 超碰在线观看免费在线观看| 888欧美视频在线| 日韩成人综艺在线播放| 超污视频在线观看污污污| 最新日韩av传媒在线| 国产又粗又猛又爽又黄的视频美国| 精品老妇女久久9g国产| 岛国av高清在线成人在线| 日韩不卡中文在线视频网站| 日本在线一区二区不卡视频| 第一福利视频在线观看| 亚洲偷自拍高清视频| 国产精品久久久久国产三级试频| 精品视频国产在线观看| 天天日天天干天天爱| 激情啪啪啪啪一区二区三区 | 国产一级麻豆精品免费| 日日夜夜精品一二三| 成人av在线资源网站| 久久精品国产999| 在线播放国产黄色av| 一区二区三区在线视频福利| 黄色视频在线观看高清无码 | 国产一级精品综合av| 日韩美av高清在线| 精品首页在线观看视频| 美女少妇亚洲精选av| 日本熟妇丰满厨房55| 欧美黄片精彩在线免费观看| 亚洲人妻国产精品综合| 内射久久久久综合网| 国产一区二区三免费视频| 777奇米久久精品一区| 中文字幕 码 在线视频| 亚洲最大黄了色网站| 久久人人做人人妻人人玩精品vr| 欧美色婷婷综合在线| 免费人成黄页网站在线观看国产| 天天艹天天干天天操| 99热色原网这里只有精品| 爆乳骚货内射骚货内射在线| 大屁股肉感人妻中文字幕在线| 69精品视频一区二区在线观看| 精品视频中文字幕在线播放| 美女小视频网站在线| 人妻少妇亚洲精品中文字幕| 93精品视频在线观看| 亚洲一级 片内射视正片| 视频 一区二区在线观看| aⅴ精产国品一二三产品| 青青青青青操视频在线观看| 日本一二三中文字幕| 黄色视频在线观看高清无码 | 99精品国产免费久久| 色婷婷综合激情五月免费观看 | av中文字幕电影在线看| 国产大鸡巴大鸡巴操小骚逼小骚逼| 果冻传媒av一区二区三区| 国产精品久久久久久久久福交| 成年人黄色片免费网站| 亚洲成av人无码不卡影片一| 55夜色66夜色国产精品站| 国产黄网站在线观看播放| av一本二本在线观看| 五十路熟女人妻一区二区9933| 天天日天天日天天射天天干| 日韩精品中文字幕福利| 精品一区二区三区午夜| wwwxxx一级黄色片| 91在线视频在线精品3| 亚洲最大黄 嗯色 操 啊| 福利视频网久久91| 综合色区亚洲熟妇shxstz| 日本韩国免费一区二区三区视频| 国产一区av澳门在线观看| 亚洲一区二区三区久久受 | 在线不卡成人黄色精品| 中文字幕av男人天堂| 青青青青操在线观看免费| 天天日天天干天天爱| 在线国产精品一区二区三区| xxx日本hd高清| 亚洲激情唯美亚洲激情图片| 男人操女人的逼免费视频| 青青草国内在线视频精选| 日韩人妻在线视频免费| 亚洲av午夜免费观看| 大香蕉伊人国产在线| 中国视频一区二区三区| 蜜桃色婷婷久久久福利在线| 日韩a级精品一区二区| 日本裸体熟妇区二区欧美| 亚洲粉嫩av一区二区三区| 国产成人精品一区在线观看| 337p日本大胆欧美人| 好男人视频在线免费观看网站| 青青色国产视频在线| 成人蜜桃美臀九一一区二区三区| 91九色porny国产蝌蚪视频| 欧美成人综合色在线噜噜| 57pao国产一区二区| www天堂在线久久| 黄页网视频在线免费观看| 影音先锋女人av噜噜色| 亚洲激情,偷拍视频| 国产麻豆国语对白露脸剧情| 沈阳熟妇28厘米大战黑人| AV天堂一区二区免费试看| 91人妻精品久久久久久久网站 | 在线国产中文字幕视频| 日比视频老公慢点好舒服啊| 在线观看国产网站资源| 美女张开腿让男生操在线看| 中文人妻AV久久人妻水| 一区二区视频视频视频| 日日夜夜大香蕉伊人| 欧美viboss性丰满| 亚洲变态另类色图天堂网| av亚洲中文天堂字幕网| 天天干夜夜操啊啊啊| 中文字幕 人妻精品| 中文字幕视频一区二区在线观看| 亚洲av日韩精品久久久久久hd| av中文字幕国产在线观看| 午夜在线一区二区免费| 亚洲一级 片内射视正片| 人妻少妇一区二区三区蜜桃| 亚洲特黄aaaa片| 亚洲 人妻 激情 中文| 蜜桃专区一区二区在线观看| 特级无码毛片免费视频播放| 2022天天干天天操| 国产黑丝高跟鞋视频在线播放| 好了av中文字幕在线| 91快播视频在线观看| 绯色av蜜臀vs少妇| 成人乱码一区二区三区av| 免费观看污视频网站| 日日摸夜夜添夜夜添毛片性色av| 亚洲国产中文字幕啊啊啊不行了| 久久久久久久精品老熟妇| 成年人黄色片免费网站| 欧美国品一二三产区区别| 亚洲蜜臀av一区二区三区九色| 欧美色婷婷综合在线| 熟妇一区二区三区高清版| 欧美日本aⅴ免费视频| 老司机深夜免费福利视频在线观看| 自拍 日韩 欧美激情| 美味人妻2在线播放| 伊人精品福利综合导航| 少妇人妻久久久久视频黄片| 欧美熟妇一区二区三区仙踪林| 婷婷六月天中文字幕| 国产白袜脚足J棉袜在线观看| 99热久久这里只有精品| 91精品国产黑色丝袜| 亚洲图片偷拍自拍区| 2022天天干天天操| 日本少妇的秘密免费视频| 亚洲国产中文字幕啊啊啊不行了| 中国把吊插入阴蒂的视频| 在线观看av亚洲情色| 精品国产成人亚洲午夜| 国产大学生援交正在播放| 密臀av一区在线观看| 早川濑里奈av黑人番号| 国产精品久久久久久久精品视频| 成年人中文字幕在线观看| 2022天天干天天操| 国产黄网站在线观看播放| 黑人变态深video特大巨大| 日辽宁老肥女在线观看视频| 欧美视频中文一区二区三区| 国产品国产三级国产普通话三级| 日本真人性生活视频免费看| 成人亚洲精品国产精品| 国产麻豆剧果冻传媒app| 美女被肏内射视频网站| av在线免费观看亚洲天堂| 亚洲一区二区三区久久午夜| 不卡一不卡二不卡三| 中国把吊插入阴蒂的视频| 中文亚洲欧美日韩无线码| 免费看国产av网站| 日本男女操逼视频免费看| 蜜桃专区一区二区在线观看| 人妻少妇一区二区三区蜜桃| 亚洲1卡2卡三卡4卡在线观看 | 成年人该看的视频黄免费| 超鹏97历史在线观看| 五十路av熟女松本翔子| 国产一区二区欧美三区| 自拍偷区二区三区麻豆| 日本美女成人在线视频| 少妇人妻真实精品视频| 一区二区三区av高清免费| 亚洲av午夜免费观看| 色综合天天综合网国产成人| 久久久久91精品推荐99| 国产成人综合一区2区| 久草视频在线免播放| jul—619中文字幕在线| 少妇人妻真实精品视频| 99精品久久久久久久91蜜桃| 国产成人午夜精品福利| 国产又粗又猛又爽又黄的视频美国| 青青青视频手机在线观看| 99的爱精品免费视频| 丝袜美腿视频诱惑亚洲无| 中文字幕1卡1区2区3区| 夜色17s精品人妻熟女| av线天堂在线观看| 综合精品久久久久97| 久久农村老妇乱69系列| 玩弄人妻熟妇性色av少妇| 日韩精品电影亚洲一区| mm131美女午夜爽爽爽| 98视频精品在线观看| 亚洲精品午夜aaa久久| 久久这里有免费精品| 男女之间激情网午夜在线| 97人妻总资源视频| 日韩av大胆在线观看| 日韩影片一区二区三区不卡免费| 大香蕉玖玖一区2区| 亚洲一区二区三区av网站| 日本少妇的秘密免费视频| 最新国产精品网址在线观看| 亚洲国产欧美国产综合在线| 懂色av蜜桃a v| 亚洲人一区二区中文字幕| 中文字幕乱码av资源| 亚洲免费视频欧洲免费视频| 91免费黄片可看视频| 中国黄色av一级片| 欲满人妻中文字幕在线| 亚洲av无码成人精品区辽| 视频一区二区在线免费播放| 国产成人精品亚洲男人的天堂| 制服丝袜在线人妻中文字幕| 精品av久久久久久久| 在线观看国产免费麻豆| 亚洲国产最大av综合| 欧美日韩不卡一区不区二区| 日日夜夜大香蕉伊人| 国产精品三级三级三级| 91精品视频在线观看免费| 大香蕉大香蕉在线有码 av| 强行扒开双腿猛烈进入免费版| 天天躁夜夜躁日日躁a麻豆| 一二三中文乱码亚洲乱码one| 黑人进入丰满少妇视频| 大鸡八强奸视频在线观看| 亚洲av黄色在线网站| aiss午夜免费视频| 老师啊太大了啊啊啊尻视频| 亚洲精品国偷自产在线观看蜜桃 | 青青青青草手机在线视频免费看| 100%美女蜜桃视频| 亚洲美女高潮喷浆视频| 亚洲高清免费在线观看视频| 天天操夜夜骑日日摸| 1000部国产精品成人观看视频| 97少妇精品在线观看| 国产熟妇人妻ⅹxxxx麻豆| 日韩特级黄片高清在线看| 成人av在线资源网站| 日韩av熟妇在线观看| 国产内射中出在线观看| 色综合久久久久久久久中文| 在线免费91激情四射| 自拍 日韩 欧美激情| 亚洲av在线观看尤物| 日韩加勒比东京热二区| 亚洲av日韩高清hd| 传媒在线播放国产精品一区| 国产成人午夜精品福利| 亚洲成av人无码不卡影片一| 直接能看的国产av| 熟女在线视频一区二区三区| 国产第一美女一区二区三区四区| 丝袜肉丝一区二区三区四区在线看| 操人妻嗷嗷叫视频一区二区| 青青青青青操视频在线观看| 国产精品入口麻豆啊啊啊| 天天艹天天干天天操| 亚洲成人av一区久久| 亚洲国产欧美国产综合在线| 中文字幕在线乱码一区二区 | 日本乱人一区二区三区| 黑人巨大的吊bdsm| 国产午夜激情福利小视频在线| 国产高清97在线观看视频| av中文字幕在线导航| 在线免费观看黄页视频| 午夜精品一区二区三区城中村| 少妇人妻二三区视频| 韩国亚洲欧美超一级在线播放视频| 国产高清在线在线视频| av中文字幕在线导航| 年轻的人妻被夫上司侵犯| 一区二区麻豆传媒黄片| 护士特殊服务久久久久久久| 偷拍自拍福利视频在线观看| 91精品一区二区三区站长推荐| 三级等保密码要求条款| 免费在线福利小视频| v888av在线观看视频| 亚洲熟女久久久36d| 精品视频一区二区三区四区五区| 午夜成午夜成年片在线观看| 丝袜美腿欧美另类 中文字幕| 亚洲一区二区三区uij| yy6080国产在线视频| 亚洲美女自偷自拍11页| 唐人色亚洲av嫩草| 欧美精品 日韩国产| 天天日天天舔天天射进去| 黄色成人在线中文字幕| 国产精品久久久久久美女校花| 18禁美女羞羞免费网站| 欧美中国日韩久久精品| 欧美成人一二三在线网| 亚洲日本一区二区久久久精品| 天天操天天射天天操天天天| 好吊操视频这里只有精品| 精品美女久久久久久| 国产一级精品综合av| 亚洲 中文 自拍 无码| 欧美色呦呦最新网址| 国产精品黄页网站视频| 久久麻豆亚洲精品av| 色吉吉影音天天干天天操| 免费观看污视频网站| av在线观看网址av| 大屁股肉感人妻中文字幕在线| 亚洲av第国产精品| 性欧美激情久久久久久久| 国产日韩精品电影7777| 国产刺激激情美女网站| 91国产资源在线视频| 青青青青青免费视频| 自拍偷拍日韩欧美亚洲| av网址在线播放大全| 久久久久久久久久一区二区三区| 亚洲在线观看中文字幕av| 人人爱人人妻人人澡39| 一本一本久久a久久精品综合不卡| 欧美色婷婷综合在线| 18禁美女羞羞免费网站| 狠狠操操操操操操操操操| 亚洲欧美清纯唯美另类| 3344免费偷拍视频| 国产伊人免费在线播放| 超pen在线观看视频公开97| 搡老熟女一区二区在线观看| 视频久久久久久久人妻| 日韩熟女系列一区二区三区| 伊人开心婷婷国产av| 2025年人妻中文字幕乱码在线| 一色桃子人妻一区二区三区| 五月精品丁香久久久久福利社| 老司机午夜精品视频资源| 中文字幕无码日韩专区免费| 中文字幕一区二区人妻电影冢本| 在线免费观看视频一二区| 快插进小逼里大鸡吧视频| 成人在线欧美日韩国产| 男人操女人逼逼视频网站| 中文字幕一区二区人妻电影冢本| 日韩av大胆在线观看| 国产精品一区二区av国| 男人的天堂av日韩亚洲| 精品区一区二区三区四区人妻| 成人福利视频免费在线| 日韩视频一区二区免费观看| 久久久久久久一区二区三| 久久久久久久亚洲午夜综合福利| 国产亚洲四十路五十路| 天天干天天啪天天舔| 欧美一级视频一区二区| 亚洲综合另类精品小说| 超级福利视频在线观看| 久久久久久久亚洲午夜综合福利| 中文字幕日韩无敌亚洲精品| 成人免费公开视频无毒| 又粗又长 明星操逼小视频 | 国产成人精品久久二区91| 91天堂天天日天天操| 换爱交换乱高清大片| 夜夜操,天天操,狠狠操| 精品少妇一二三视频在线| 2021久久免费视频| 亚洲av色香蕉一区二区三区| 中文字幕av男人天堂| 好了av中文字幕在线| www久久久久久久久久久| 久久久久久国产精品| 最新日韩av传媒在线| 馒头大胆亚洲一区二区| 天天插天天色天天日| 亚洲高清国产一区二区三区| 精品美女久久久久久| 欧美激情精品在线观看| 老鸭窝日韩精品视频观看| 欧美一级色视频美日韩| 久久久精品欧洲亚洲av| 五十路老熟女码av| 精品91高清在线观看| 日本美女性生活一级片| 年轻的人妻被夫上司侵犯| 欧美在线偷拍视频免费看| 99视频精品全部15| 都市家庭人妻激情自拍视频| 社区自拍揄拍尻屁你懂的| 午夜在线观看一区视频| 亚洲偷自拍高清视频| 亚洲成a人片777777| 久久久久久国产精品| 1024久久国产精品| 欧美亚洲国产成人免费在线| 社区自拍揄拍尻屁你懂的 | 欧美在线一二三视频| av老司机亚洲一区二区| 91九色国产porny蝌蚪| 91小伙伴中女熟女高潮| 99久久成人日韩欧美精品| 亚洲Av无码国产综合色区| 一区二区在线视频中文字幕| 亚洲欧美一卡二卡三卡| 黄色大片男人操女人逼| 大胸性感美女羞爽操逼毛片| 91在线视频在线精品3| 家庭女教师中文字幕在线播放| 在线视频免费观看网| 伊人成人综合开心网| av手机在线免费观看日韩av| 91av精品视频在线| 天天日天天干天天干天天日| 一区二区三区在线视频福利| av日韩在线观看大全| 亚洲一区二区久久久人妻| 午夜成午夜成年片在线观看| yy96视频在线观看| 欧亚日韩一区二区三区观看视频| av中文字幕电影在线看| 99精品久久久久久久91蜜桃| 青青青艹视频在线观看| 91久久人澡人人添人人爽乱| 性生活第二下硬不起来| 欧美另类z0z变态| 日韩少妇人妻精品无码专区| 国产亚州色婷婷久久99精品| 真实国模和老外性视频| 天天日天天操天天摸天天舔| 老司机免费视频网站在线看| 91极品新人『兔兔』精品新作| 东京干手机福利视频| 狠狠鲁狠狠操天天晚上干干| 久久久超爽一二三av| 天天色天天操天天透| 年轻的人妻被夫上司侵犯| 国产精品污污污久久| 国产成人精品久久二区91| 免费观看成年人视频在线观看| 亚洲激情唯美亚洲激情图片| 精品一区二区三区三区88| 2022天天干天天操| 亚洲精品成人网久久久久久小说 | 亚洲国产欧美一区二区三区…| 任你操视频免费在线观看| 馒头大胆亚洲一区二区| 精品首页在线观看视频| 亚洲国产精品久久久久蜜桃| 免费在线福利小视频| 黄工厂精品视频在线观看| 不卡日韩av在线观看| 超级福利视频在线观看| 黄色片一级美女黄色片| 密臀av一区在线观看| 18禁免费av网站| 精品高潮呻吟久久av| 美女视频福利免费看| 午夜久久久久久久99| 538精品在线观看视频| 欧美viboss性丰满| 99热这里只有精品中文| av视屏免费在线播放| 黑人进入丰满少妇视频| 国产精品成人xxxx| 亚洲精品国产久久久久久| 成人性爱在线看四区| gav成人免费播放| 亚洲欧美另类手机在线| 好吊视频—区二区三区| yy96视频在线观看| 5528327男人天堂| 亚洲国产成人av在线一区| 成年午夜免费无码区| 欧美第一页在线免费观看视频| 丝袜肉丝一区二区三区四区在线看| 自拍偷区二区三区麻豆| 高潮喷水在线视频观看| 五十路息与子猛烈交尾视频| 97精品视频在线观看| 国产高清精品一区二区三区| 日本真人性生活视频免费看| 国产高潮无码喷水AV片在线观看| 岳太深了紧紧的中文字幕| 日本韩国免费福利精品| 18禁美女羞羞免费网站| 日本18禁久久久久久| av亚洲中文天堂字幕网| a v欧美一区=区三区| 91在线视频在线精品3| 欧美中国日韩久久精品| 美女骚逼日出水来了| 久久热久久视频在线观看| 亚洲午夜电影之麻豆| 最新的中文字幕 亚洲| 亚洲激情,偷拍视频| 这里有精品成人国产99| 国产精品中文av在线播放| 国产91嫩草久久成人在线视频| 亚洲一区久久免费视频| 视频 国产 精品 熟女 | 日本精品视频不卡一二三| 91精品视频在线观看免费| 国产高清女主播在线| 在线国产中文字幕视频| 亚洲高清国产自产av| 亚洲偷自拍高清视频| 成人免费做爰高潮视频| 免费人成黄页网站在线观看国产| 97瑟瑟超碰在线香蕉| 天堂av在线官网中文| 精品国产午夜视频一区二区| 青青社区2国产视频| 精品黑人一区二区三区久久国产| 91精品国产91久久自产久强| 午夜精品一区二区三区福利视频 | 国产高清97在线观看视频| 中文字幕高清免费在线人妻| 自拍偷拍vs一区二区三区| 又粗又硬又猛又爽又黄的| 国产三级精品三级在线不卡| 亚洲综合自拍视频一区| 老鸭窝在线观看一区| 欧美偷拍自拍色图片| 亚洲 图片 欧美 图片| 视频一区二区在线免费播放| 中文字幕人妻一区二区视频| 日韩美在线观看视频黄| 少妇露脸深喉口爆吞精| 青青草精品在线视频观看| 天天操天天弄天天射| 日本少妇人妻xxxxx18| 亚洲综合在线视频可播放| 久草极品美女视频在线观看| 久久美欧人妻少妇一区二区三区| 任你操任你干精品在线视频 | 婷婷色国产黑丝少妇勾搭AV| 国产性生活中老年人视频网站| 干逼又爽又黄又免费的视频| 大香蕉日本伊人中文在线| 风流唐伯虎电视剧在线观看| 欧美另类重口味极品在线观看| 老司机福利精品免费视频一区二区| 日韩熟女av天堂系列| 91精品国产综合久久久蜜| 亚洲伊人久久精品影院一美女洗澡| 乱亲女秽乱长久久久| 亚洲欧洲av天堂综合| 久久热这里这里只有精品| 宅男噜噜噜666国产| 欧美色婷婷综合在线| 伊人精品福利综合导航| 啪啪啪啪啪啪啪啪啪啪黄色| 亚洲国产美女一区二区三区软件| 日本熟妇色熟妇在线观看| 大学生A级毛片免费视频| 青青操免费日综合视频观看| 人妻在线精品录音叫床| 亚洲视频乱码在线观看| 成年人午夜黄片视频资源| 极品粉嫩小泬白浆20p主播| 日本裸体熟妇区二区欧美| 一区二区三区蜜臀在线| 午夜福利资源综合激情午夜福利资 | 2020韩国午夜女主播在线| 成年人的在线免费视频| 91色秘乱一区二区三区| 国产91精品拍在线观看| 2022天天干天天操| 亚洲1卡2卡三卡4卡在线观看 | 国产一级麻豆精品免费| 午夜的视频在线观看| 久久这里只有精品热视频 | 亚洲欧洲一区二区在线观看| 玩弄人妻熟妇性色av少妇| 中国黄片视频一区91| 中文字幕在线一区精品| 欧美精品一区二区三区xxxx| 亚洲av日韩精品久久久久久hd| 日韩美在线观看视频黄| 日本后入视频在线观看 | 超pen在线观看视频公开97| 国产自拍黄片在线观看| 亚洲国产第一页在线观看| 青青青青操在线观看免费| 亚洲粉嫩av一区二区三区| 啪啪啪啪啪啪啪啪啪啪黄色| 69精品视频一区二区在线观看| 91精品激情五月婷婷在线| 国产亚洲国产av网站在线| 日本脱亚入欧是指什么| 亚洲最大黄 嗯色 操 啊| 日韩剧情片电影在线收看| 新婚人妻聚会被中出| 国产福利小视频二区| 大陆av手机在线观看| 最新国产精品拍在线观看| 亚洲成人av在线一区二区| 亚洲欧美精品综合图片小说| 久草福利电影在线观看| 同居了嫂子在线播高清中文| 中文字幕在线一区精品| 狠狠操操操操操操操操操| 亚洲欧美色一区二区| 精品一区二区三区三区色爱| 蜜桃视频入口久久久| 日本av熟女在线视频| 欧美成人一二三在线网| 天天干狠狠干天天操| 直接观看免费黄网站| 亚洲av午夜免费观看| 曰本无码人妻丰满熟妇啪啪| 午夜精品一区二区三区4| 亚洲护士一区二区三区| 大陆av手机在线观看| 丰满的子国产在线观看| yellow在线播放av啊啊啊| 日韩a级精品一区二区| 欧美成人小视频在线免费看| 自拍偷拍亚洲精品第2页| 婷婷综合蜜桃av在线| 人人超碰国字幕观看97| 2o22av在线视频| 久久久久久久亚洲午夜综合福利| 福利视频广场一区二区| 性色av一区二区三区久久久| 性生活第二下硬不起来| 日韩美女搞黄视频免费| www天堂在线久久| 国产性感美女福利视频| 偷拍自拍视频图片免费| 成年人啪啪视频在线观看| 天天爽夜夜爽人人爽QC| 91极品新人『兔兔』精品新作| 伊人日日日草夜夜草| 伊人开心婷婷国产av| 在线 中文字幕 一区| 亚洲 中文字幕在线 日韩| 国产免费av一区二区凹凸四季| okirakuhuhu在线观看| 亚洲欧美一区二区三区爱爱动图| 视频在线免费观看你懂得| 国产伊人免费在线播放| aⅴ精产国品一二三产品| 精品美女福利在线观看| 天天色天天舔天天射天天爽| 把腿张开让我插进去视频| 91福利在线视频免费观看| 青青青青视频在线播放| 欧美亚洲自偷自拍 在线| 日本免费视频午夜福利视频| 国产精品视频欧美一区二区| 午夜美女福利小视频| 中文字幕 码 在线视频| 日本女人一级免费片| 天天操天天弄天天射| 日本高清撒尿pissing| 亚洲福利天堂久久久久久| xxx日本hd高清| 91天堂天天日天天操| 欧美久久久久久三级网| 国产精品自偷自拍啪啪啪| 老司机99精品视频在线观看 | 国产精品熟女久久久久浪潮| 中文字幕 码 在线视频| 久久久久久久精品老熟妇| 38av一区二区三区| 加勒比视频在线免费观看| 91啪国自产中文字幕在线| 亚洲国产成人在线一区| 精品一区二区三区三区色爱| 少妇ww搡性bbb91| 91chinese在线视频| 天堂av在线官网中文| 偷拍自拍国产在线视频| ka0ri在线视频| 熟女少妇激情五十路| 男大肉棒猛烈插女免费视频| 五十路丰满人妻熟妇| 国产chinesehd精品麻豆| 午夜青青草原网在线观看| 99热99这里精品6国产| 亚洲av极品精品在线观看| 日韩人妻丝袜中文字幕| 少妇人妻久久久久视频黄片| 一区二区三区综合视频| 91快播视频在线观看| 亚洲av日韩精品久久久| 2020中文字幕在线播放| 中文字幕在线欧美精品| 亚洲欧美一卡二卡三卡| 天天通天天透天天插| 91九色porny国产在线| 久久久久91精品推荐99| 国产成人精品av网站| 亚洲av日韩高清hd| 80电影天堂网官网| asmr福利视频在线观看| 国产自拍黄片在线观看| 精品久久久久久久久久中文蒉| 高清成人av一区三区| 亚洲精品无码久久久久不卡| 亚洲国际青青操综合网站| 亚洲精品三级av在线免费观看| 欧美乱妇无乱码一区二区| 午夜精品一区二区三区福利视频| 曰本无码人妻丰满熟妇啪啪| 国产熟妇乱妇熟色T区| 中文字幕亚洲中文字幕| 视频久久久久久久人妻| 天天干天天日天天干天天操| 性感美女高潮视频久久久| 日本www中文字幕| 人妻无码色噜噜狠狠狠狠色| 亚洲国产精品美女在线观看| 99国内精品永久免费视频| 亚洲国产精品中文字幕网站| 亚洲精品 日韩电影| 成年人该看的视频黄免费| 自拍 日韩 欧美激情| 97人人妻人人澡人人爽人人精品| 人妻无码色噜噜狠狠狠狠色| 国产污污污污网站在线| 2022精品久久久久久中文字幕| 91www一区二区三区| 中国老熟女偷拍第一页| 亚洲福利精品视频在线免费观看| 久久久久久久精品老熟妇| 天天日夜夜操天天摸| av日韩在线免费播放| 精品久久婷婷免费视频| 成人动漫大肉棒插进去视频| 久草电影免费在线观看| 亚洲欧美色一区二区| 女同互舔一区二区三区| 欧美亚洲偷拍自拍色图| 欧美日韩人妻久久精品高清国产 | 一区二区在线视频中文字幕 | 日日夜夜狠狠干视频| 久草免费人妻视频在线| 午夜毛片不卡免费观看视频| 精品国产在线手机在线| 91人妻精品一区二区久久| 人人妻人人爽人人澡人人精品| 91老师蜜桃臀大屁股| 欧美另类z0z变态| 中文字幕国产专区欧美激情| av成人在线观看一区| 国产97视频在线精品| 97色视频在线观看| 中文字幕成人日韩欧美| 国产成人精品亚洲男人的天堂| 亚洲av色香蕉一区二区三区| 国产中文精品在线观看| 在线观看日韩激情视频| 色av色婷婷人妻久久久精品高清| 亚洲欧美激情中文字幕| 国产极品精品免费视频| 五月天久久激情视频| 97人人模人人爽人人喊| 亚洲成人av在线一区二区| aaa久久久久久久久| 亚洲国产在人线放午夜| 欧美日韩v中文在线| 国产av一区2区3区| 亚洲中文精品字幕在线观看| 国产三级影院在线观看| 国产精品黄大片在线播放| 91极品新人『兔兔』精品新作| 欧美精产国品一二三产品价格 | 免费看高清av的网站| 美女视频福利免费看| 偷青青国产精品青青在线观看| 天天夜天天日天天日| 精品人妻伦一二三区久| 国产熟妇一区二区三区av| 91九色porny蝌蚪国产成人| 55夜色66夜色国产精品站| 福利视频一区二区三区筱慧 | 久草视频中文字幕在线观看| 99热久久这里只有精品8| 亚洲国产第一页在线观看| 不卡一区一区三区在线| 护士特殊服务久久久久久久| 888亚洲欧美国产va在线播放| 日韩欧美中文国产在线| 香港三日本三韩国三欧美三级| 欧美国产亚洲中英文字幕| av成人在线观看一区| 亚洲精品午夜久久久久| 美女视频福利免费看| 成人蜜桃美臀九一一区二区三区| 福利国产视频在线观看| 黑人性生活视频免费看| 成人av亚洲一区二区| 蜜臀av久久久久蜜臀av麻豆| www天堂在线久久| 欧美黑人性猛交xxxxⅹooo| www日韩a级s片av| 99精品国产aⅴ在线观看| 91av中文视频在线| 蜜桃久久久久久久人妻| free性日本少妇| 国产一区二区视频观看| 999九九久久久精品| 国产欧美精品不卡在线| 2021最新热播中文字幕| 伊人精品福利综合导航| 亚洲综合另类欧美久久| 18禁美女羞羞免费网站| 91麻豆精品秘密入口在线观看| 精产国品久久一二三产区区别| 人妻少妇av在线观看| 午夜国产福利在线观看| 日韩在线视频观看有码在线| 国产精品一区二区三区蜜臀av | 把腿张开让我插进去视频| 韩国AV无码不卡在线播放| 青青操免费日综合视频观看| 一区二区三区四区五区性感视频| 亚洲国产欧美国产综合在线| 黑人变态深video特大巨大| 欧美在线偷拍视频免费看| 国产日本欧美亚洲精品视| 都市家庭人妻激情自拍视频| 亚洲av男人天堂久久| 天天躁夜夜躁日日躁a麻豆| 国产福利小视频大全| 国产精品黄片免费在线观看| 夜夜嗨av蜜臀av| 97精品人妻一区二区三区精品| 91九色porny蝌蚪国产成人| 国产97在线视频观看| 亚洲日本一区二区久久久精品| 亚洲激情,偷拍视频| 久久久久久久久久一区二区三区| 午夜国产福利在线观看| 亚洲最大黄 嗯色 操 啊| 精品国产乱码一区二区三区乱| 插小穴高清无码中文字幕| 女生被男生插的视频网站| 大黑人性xxxxbbbb| 天天综合天天综合天天网| av手机在线免费观看日韩av| 中文字幕av一区在线观看| 又大又湿又爽又紧A视频| 日韩熟女系列一区二区三区| 天天日天天干天天搡| 国产午夜激情福利小视频在线| 午夜大尺度无码福利视频| 激情国产小视频在线| 自拍偷拍日韩欧美亚洲| 日韩av有码中文字幕| 丰满的子国产在线观看| 久碰精品少妇中文字幕av | 特大黑人巨大xxxx| 国产高清97在线观看视频| 91桃色成人网络在线观看| 天天操夜夜骑日日摸| 动色av一区二区三区| 国产精品国产三级麻豆| 日本黄色特一级视频| 国产视频网站一区二区三区| 深田咏美亚洲一区二区| 久久久久久九九99精品| 九色视频在线观看免费| 午夜dv内射一区区| 日本丰满熟妇BBXBBXHD| 亚洲午夜伦理视频在线| 中文字幕中文字幕人妻| 日本熟妇一区二区x x| 亚洲成人激情av在线| 日韩一区二区三区三州| 91精品国产麻豆国产| 亚洲一级特黄特黄黄色录像片| 黑人性生活视频免费看| 国产精品中文av在线播放| 一区二区三区的久久的蜜桃的视频| av天堂中文免费在线| 久久三久久三久久三久久| 福利视频广场一区二区| 91社福利《在线观看| 黄色片一级美女黄色片| 中文字幕 人妻精品| 欧美激情电影免费在线| 做爰视频毛片下载蜜桃视频1| 中文字幕欧美日韩射射一| 精产国品久久一二三产区区别| 蜜臀成人av在线播放| 亚洲第一黄色在线观看| 激情国产小视频在线| 中国无遮挡白丝袜二区精品| 动漫美女的小穴视频| 黄色片黄色片wyaa| 男人的天堂在线黄色| 久久久精品国产亚洲AV一| 色在线观看视频免费的| 免费无毒热热热热热热久| 天天日天天做天天日天天做| 中文字幕在线视频一区二区三区| 婷婷综合亚洲爱久久| 久草极品美女视频在线观看 | 一个人免费在线观看ww视频 | 天天日天天敢天天干| 午夜久久久久久久精品熟女| 中文字幕免费福利视频6| 懂色av之国产精品| 中文字幕AV在线免费看 | 91免费黄片可看视频| 91精品免费久久久久久| 午夜激情精品福利视频| 懂色av蜜桃a v| 日本免费视频午夜福利视频| 操的小逼流水的文章| av森泽佳奈在线观看| 中文字幕av男人天堂| a v欧美一区=区三区| 国产妇女自拍区在线观看| 100%美女蜜桃视频| 91麻豆精品91久久久久同性| 天天干天天操天天爽天天摸| 亚洲av无乱一区二区三区性色| 午夜在线观看一区视频| 久久永久免费精品人妻专区| 亚洲精品 日韩电影| 亚洲高清视频在线不卡| 91精品视频在线观看免费| 国产亚洲精品视频合集| 少妇一区二区三区久久久| 色综合久久五月色婷婷综合| 中文字幕亚洲久久久| 大尺度激情四射网站| sspd152中文字幕在线| 日韩欧美国产一区ab| 人妻3p真实偷拍一二区| 黑人解禁人妻叶爱071| 亚洲专区激情在线观看视频| 日韩激情文学在线视频| 国产极品美女久久久久久| 天天操天天爽天天干| 日韩剧情片电影在线收看| 黄色成人在线中文字幕| 馒头大胆亚洲一区二区| 综合色区亚洲熟妇shxstz| 国产亚洲精品欧洲在线观看| 天天干狠狠干天天操| 亚洲 欧美 自拍 偷拍 在线| 成人av中文字幕一区| 久久艹在线观看视频| 19一区二区三区在线播放| 福利午夜视频在线合集| 国产精品亚洲在线观看| 中文字幕一区二 区二三区四区 | gav成人免费播放| 在线免费视频 自拍| 亚洲欧美在线视频第一页| av手机在线观播放网站| 青青青爽视频在线播放| av在线资源中文字幕| 国产乱子伦一二三区| 一区二区三区精品日本| 操的小逼流水的文章| 黑人巨大的吊bdsm| 日韩美在线观看视频黄| 亚洲免费va在线播放| 中英文字幕av一区| okirakuhuhu在线观看| 久久久久久九九99精品| a v欧美一区=区三区| 日日夜夜大香蕉伊人| 欧美偷拍自拍色图片| 在线观看国产免费麻豆| 婷婷综合蜜桃av在线| 婷婷激情四射在线观看视频| 亚洲av无女神免非久久| 五月激情婷婷久久综合网| 一个色综合男人天堂| 成人免费公开视频无毒| 韩国爱爱视频中文字幕| 国产aⅴ一线在线观看| 99国内小视频在现欢看| 国产九色91在线视频| 日韩二区视频一线天婷婷五| 制服丝袜在线人妻中文字幕| 国产日韩av一区二区在线| 天天干狠狠干天天操| 国产精品一区二区久久久av| 人妻熟女中文字幕aⅴ在线| 这里只有精品双飞在线播放| 国产av欧美精品高潮网站| 日韩美女综合中文字幕pp| 97香蕉碰碰人妻国产樱花| 色婷婷六月亚洲综合香蕉| 二区中出在线观看老师| 国产午夜男女爽爽爽爽爽视频| 国产熟妇一区二区三区av| 亚洲国产精品久久久久蜜桃| 日本午夜福利免费视频| 精品国产污污免费网站入口自 | 久久久久五月天丁香社区| aⅴ五十路av熟女中出| 午夜91一区二区三区| 1区2区3区4区视频在线观看| 国际av大片在线免费观看| 免费福利av在线一区二区三区| 青青青青在线视频免费观看| 成人蜜桃美臀九一一区二区三区| 国产成人精品av网站| 最新中文字幕乱码在线| 黑人借宿ntr人妻的沦陷2| 国产揄拍高清国内精品对白 | 亚洲综合一区二区精品久久| 大肉大捧一进一出好爽在线视频| 国产亚洲精品视频合集| 丝袜国产专区在线观看| 亚洲 中文字幕在线 日韩| 亚洲中文字幕乱码区| 大香蕉玖玖一区2区| jiuse91九色视频| 一区二区视频在线观看免费观看 | av黄色成人在线观看| 亚洲精品成人网久久久久久小说| 国产精品三级三级三级| 日韩亚洲高清在线观看| jiujiure精品视频在线| 91国产资源在线视频| 天天夜天天日天天日| 成人18禁网站在线播放| 国产精品成人xxxx| 精品国产午夜视频一区二区| 色综合久久五月色婷婷综合| av手机免费在线观看高潮| 午夜免费体验区在线观看| 亚洲欧洲av天堂综合| 国产又粗又猛又爽又黄的视频在线| 亚洲男人的天堂a在线| 天天日天天舔天天射进去| 国产极品精品免费视频| 揄拍成人国产精品免费看视频| 中文字幕av男人天堂| 91色秘乱一区二区三区| 91精品资源免费观看| 最新国产精品网址在线观看| 中文字母永久播放1区2区3区| av日韩在线观看大全| av老司机精品在线观看| 99久久中文字幕一本人| 精品首页在线观看视频| caoporn蜜桃视频| 人妻熟女中文字幕aⅴ在线| 91超碰青青中文字幕| 中文字幕 码 在线视频| 100%美女蜜桃视频| 看一级特黄a大片日本片黑人| 啪啪啪啪啪啪啪免费视频| 99热碰碰热精品a中文| 欧美一区二区中文字幕电影| 偷拍自拍亚洲视频在线观看| 一区二区三区另类在线| 日本熟妇喷水xxx| av天堂加勒比在线| 欧美地区一二三专区| 国产夫妻视频在线观看免费| 狠狠地躁夜夜躁日日躁| 在线观看欧美黄片一区二区三区| 欧美综合婷婷欧美综合| 91社福利《在线观看| 国产精品黄大片在线播放| 全国亚洲男人的天堂| 99一区二区在线观看| 青青青国产免费视频| 久久美欧人妻少妇一区二区三区 | 久久人人做人人妻人人玩精品vr| 在线观看免费视频网| 国产av福利网址大全| 97色视频在线观看| 久草电影免费在线观看| 日本av在线一区二区三区| 亚洲的电影一区二区三区| 亚洲第一黄色在线观看| 日本熟女50视频免费| 日本免费一级黄色录像| 午夜精品福利一区二区三区p| 福利视频网久久91| 骚逼被大屌狂草视频免费看| 伊人综合免费在线视频| 亚洲第一黄色在线观看| 欧美一区二区三区激情啪啪啪| 欧美老妇精品另类不卡片| 色呦呦视频在线观看视频| 黄网十四区丁香社区激情五月天| 被大鸡吧操的好舒服视频免费| 国产三级片久久久久久久| 成人资源在线观看免费官网| 日韩美女综合中文字幕pp| 日本xx片在线观看| 美洲精品一二三产区区别| 亚洲精品久久综合久| 亚洲精品在线资源站| 国产久久久精品毛片| 国产极品精品免费视频| 五月天中文字幕内射| 国产日韩精品一二三区久久久| 中文字日产幕乱六区蜜桃| free性日本少妇| 北条麻妃高跟丝袜啪啪| 57pao国产一区二区| 75国产综合在线视频| 成人av免费不卡在线观看| 99热这里只有精品中文| 欧美视频一区免费在线| 久久久精品999精品日本 | 亚洲av极品精品在线观看| 青青青青操在线观看免费| 黄色av网站免费在线| 好吊视频—区二区三区| 欧美国品一二三产区区别| 91精品啪在线免费| 亚洲激情偷拍一区二区 | 在线观看成人国产电影| 欧美日本在线观看一区二区| 这里只有精品双飞在线播放| 日本裸体熟妇区二区欧美| 日本脱亚入欧是指什么| 老司机在线精品福利视频| 日曰摸日日碰夜夜爽歪歪| 青青青青草手机在线视频免费看| 免费国产性生活视频| 亚洲欧美久久久久久久久| 91色网站免费在线观看| 最近中文2019年在线看| av天堂资源最新版在线看| 中文字幕+中文字幕| 亚洲男人让女人爽的视频| 国产成人精品久久二区91| 黄色av网站免费在线| 青青草原网站在线观看| 国产又粗又猛又爽又黄的视频美国| 色天天天天射天天舔| 美女被肏内射视频网站| 国产超码片内射在线| 久久美欧人妻少妇一区二区三区| 日韩写真福利视频在线观看| 激情伦理欧美日韩中文字幕| 极品性荡少妇一区二区色欲| 亚洲人妻视频在线网| 1区2区3区不卡视频| 骚货自慰被发现爆操| 日韩a级黄色小视频| 中文字幕视频一区二区在线观看| 少妇与子乱在线观看| 美日韩在线视频免费看| 性生活第二下硬不起来| 真实国模和老外性视频| 老司机在线精品福利视频| 在线不卡日韩视频播放| 中文字幕在线乱码一区二区| 国产成人小视频在线观看无遮挡| 免费在线播放a级片| 特大黑人巨大xxxx| 欧美成人综合视频一区二区 | 色花堂在线av中文字幕九九| 孕妇奶水仑乱A级毛片免费看| 亚洲在线一区二区欧美| 日日摸夜夜添夜夜添毛片性色av| av天堂加勒比在线| 福利一二三在线视频观看| 偷拍自拍福利视频在线观看| 欧美在线精品一区二区三区视频| 国产一区二区在线欧美| 国产成人精品一区在线观看 | 婷婷色国产黑丝少妇勾搭AV| 亚洲国产欧美国产综合在线| caoporn蜜桃视频| 欧美另类重口味极品在线观看| 2022国产精品视频| 国产精品国产三级麻豆| 欧美成人一二三在线网| 99久久久无码国产精品性出奶水| 在线观看911精品国产| 日韩在线视频观看有码在线| 经典av尤物一区二区| 97a片免费在线观看| 天天插天天狠天天操| 班长撕开乳罩揉我胸好爽| 日本啪啪啪啪啪啪啪| 农村胖女人操逼视频| 欧美爆乳肉感大码在线观看| 一区二区三区日本伦理| 精品视频国产在线观看| 久久艹在线观看视频| av手机免费在线观看高潮| 超碰97人人澡人人| av高潮迭起在线观看| 91国偷自产一区二区三区精品| 高潮喷水在线视频观看| 亚洲午夜在线视频福利| 都市家庭人妻激情自拍视频| 欧洲国产成人精品91铁牛tv| 久久久超爽一二三av| 在线观看黄色成年人网站 | 欧美成一区二区三区四区| 2025年人妻中文字幕乱码在线| 免费观看理论片完整版| 大鸡巴操b视频在线| 一区二区三区另类在线| 这里只有精品双飞在线播放| 在线观看免费岛国av| mm131美女午夜爽爽爽| 2012中文字幕在线高清| 99人妻视频免费在线| 青青青激情在线观看视频| 97超碰免费在线视频| 宅男噜噜噜666国产| 91在线免费观看成人| 97少妇精品在线观看| 岛国青草视频在线观看| 五月天久久激情视频| 青青青国产片免费观看视频| 日本阿v视频在线免费观看| 国产一区av澳门在线观看| 班长撕开乳罩揉我胸好爽| 91国产资源在线视频| 狠狠的往里顶撞h百合| 午夜激情高清在线观看| 国产日韩一区二区在线看| 2021国产一区二区| 中文字幕综合一区二区| 在线不卡成人黄色精品| 中文字幕无码日韩专区免费| 又大又湿又爽又紧A视频| 搡老妇人老女人老熟女| 自拍偷拍亚洲欧美在线视频| 亚洲视频乱码在线观看| 97人妻人人澡爽人人精品| 78色精品一区二区三区| 久精品人妻一区二区三区| 国产男女视频在线播放| 亚洲精品三级av在线免费观看| 五十路av熟女松本翔子| 国产aⅴ一线在线观看| 日韩精品啪啪视频一道免费| 密臀av一区在线观看| 清纯美女在线观看国产| 天天日天天操天天摸天天舔| 成人av免费不卡在线观看| 懂色av蜜桃a v| 秋霞午夜av福利经典影视| 极品性荡少妇一区二区色欲| 亚洲av日韩av第一区二区三区| 亚洲一区二区三区精品视频在线| 天天射夜夜操狠狠干| 97人妻无码AV碰碰视频| 婷婷综合蜜桃av在线| 中文字幕国产专区欧美激情| 国产九色91在线观看精品| 一区二区三区久久中文字幕| 中文字幕1卡1区2区3区| 日韩av熟妇在线观看| 一区二区三区另类在线| 98精产国品一二三产区区别| 人妻最新视频在线免费观看| 亚洲av男人天堂久久| 在线制服丝袜中文字幕| 亚洲va国产va欧美精品88| 中文字幕 码 在线视频| 扒开腿挺进肉嫩小18禁视频| 高潮视频在线快速观看国家快速| 亚洲激情偷拍一区二区| 亚洲综合另类欧美久久| 大鸡八强奸视频在线观看| 亚洲av天堂在线播放| 91极品大一女神正在播放| 黑人大几巴狂插日本少妇| 午夜精品亚洲精品五月色| 风流唐伯虎电视剧在线观看| 一区二区视频在线观看免费观看| 晚上一个人看操B片| 天天日天天日天天擦| 国产成人小视频在线观看无遮挡| 中国黄片视频一区91| 亚洲激情偷拍一区二区| 88成人免费av网站| 亚洲最大黄了色网站| 亚洲少妇人妻无码精品| 在线观看操大逼视频| 最新国产精品拍在线观看| 亚洲欧美国产麻豆综合| 红杏久久av人妻一区| 日本女人一级免费片| 欧美在线一二三视频| 一区二区三区日韩久久| 亚洲卡1卡2卡三卡四老狼| 欧美日韩不卡一区不区二区| 3D动漫精品啪啪一区二区下载| 亚洲高清自偷揄拍自拍| 中国视频一区二区三区| 性欧美日本大妈母与子| 老熟妇xxxhd老熟女| 亚洲熟妇无码一区二区三区| 国产极品精品免费视频| 麻豆精品成人免费视频| 天天干夜夜操啊啊啊| 337p日本大胆欧美人| 老司机午夜精品视频资源| 播放日本一区二区三区电影| 国产成人精品久久二区91 | 国产麻豆精品人妻av| 欧美精品资源在线观看| 97国产精品97久久| 色综合天天综合网国产成人| 久久麻豆亚洲精品av| 全国亚洲男人的天堂| 日日操综合成人av| 国产妇女自拍区在线观看| 亚洲免费国产在线日韩| 青青青aaaa免费| 中文字幕在线永久免费播放| 91精品国产91青青碰| 日本一二三中文字幕| 日韩中文字幕在线播放第二页| 日韩欧美一级精品在线观看| 成人福利视频免费在线| 一区二区视频在线观看免费观看| 北条麻妃肉色丝袜视频| 亚洲最大黄 嗯色 操 啊| 国产片免费观看在线观看| 国产av自拍偷拍盛宴| 日韩av大胆在线观看| 日本成人不卡一区二区| 精品国产在线手机在线| 久久久久久9999久久久久| 亚洲1卡2卡三卡4卡在线观看 | 欧美特级特黄a大片免费| 男生舔女生逼逼视频| 天天操天天爽天天干| 亚洲图片欧美校园春色| 亚洲久久午夜av一区二区| 男人操女人的逼免费视频| 大鸡巴插入美女黑黑的阴毛| 精品亚洲国产中文自在线| 日本免费视频午夜福利视频| 亚洲区欧美区另类最新章节| 天天草天天色天天干| eeuss鲁片一区二区三区| 人妻另类专区欧美制服| 欧美成人猛片aaaaaaa| 国产女人露脸高潮对白视频| 在线观看国产网站资源| 一区二区三区精品日本| 18禁无翼鸟成人在线| 9色精品视频在线观看| 性感美女诱惑福利视频| 九九视频在线精品播放| 天天插天天狠天天操| 日韩午夜福利精品试看| 亚洲成人线上免费视频观看| 国产日本欧美亚洲精品视| 直接观看免费黄网站| 最新国产亚洲精品中文在线| 亚洲中文精品人人免费| 最新欧美一二三视频| 色伦色伦777国产精品| 天天射,天天操,天天说| 亚洲av香蕉一区区二区三区犇| 天天色天天舔天天射天天爽 | 大香蕉日本伊人中文在线| 欧美日韩激情啪啪啪| 国产精品中文av在线播放| 亚洲日本一区二区三区| 55夜色66夜色国产精品站| 天天干天天操天天插天天日| 色呦呦视频在线观看视频| 日韩精品中文字幕在线| 激情伦理欧美日韩中文字幕| 都市家庭人妻激情自拍视频| rct470中文字幕在线| 天天艹天天干天天操| 中文字幕在线免费第一页| 日韩熟女av天堂系列| 一级A一级a爰片免费免会员| 天堂av在线播放免费| 91桃色成人网络在线观看| av在线shipin| 9国产精品久久久久老师| 在线视频精品你懂的| 日韩激情文学在线视频| 999久久久久999| 狠狠鲁狠狠操天天晚上干干| 亚洲av香蕉一区区二区三区犇| 人妻熟女中文字幕aⅴ在线| 欧美一级片免费在线成人观看| 天干天天天色天天日天天射| yy6080国产在线视频| 社区自拍揄拍尻屁你懂的| 91大屁股国产一区二区| 精品国产污污免费网站入口自 | 亚洲一级特黄特黄黄色录像片| 成人国产激情自拍三区| av乱码一区二区三区| 男人操女人逼逼视频网站| 欧洲精品第一页欧洲精品亚洲| 日韩中文字幕福利av| 伊人综合aⅴ在线网| 边摸边做超爽毛片18禁色戒| 亚洲美女高潮喷浆视频| 综合精品久久久久97| 3344免费偷拍视频| 日本又色又爽又黄又粗| 亚洲av琪琪男人的天堂| xxx日本hd高清| 亚洲自拍偷拍精品网| 视频二区在线视频观看| 一个人免费在线观看ww视频| 亚洲在线观看中文字幕av| 桃色视频在线观看一区二区| 1区2区3区4区视频在线观看| 亚洲国产免费av一区二区三区| www久久久久久久久久久| av在线资源中文字幕| 久草视频中文字幕在线观看| 100%美女蜜桃视频| 大鸡巴操b视频在线| 国产一区成人在线观看视频| 又粗又硬又猛又爽又黄的| 一区二区视频视频视频| 日本性感美女三级视频| 日韩无码国产精品强奸乱伦| 免费福利av在线一区二区三区| 国产精品手机在线看片| 一区二区三区另类在线| 最近的中文字幕在线mv视频| 少妇一区二区三区久久久| 可以在线观看的av中文字幕| 亚洲丝袜老师诱惑在线观看| av黄色成人在线观看| 亚洲 清纯 国产com| 日韩一区二区电国产精品| 综合页自拍视频在线播放| 天天操天天干天天艹| 91欧美在线免费观看| 日韩美女综合中文字幕pp| 国产露脸对白在线观看| 亚洲 色图 偷拍 欧美| 中文字幕中文字幕人妻| 五月天色婷婷在线观看视频免费| 国产乱子伦一二三区| 在线播放一区二区三区Av无码| 中文字幕在线乱码一区二区 | 国产精品久久久久久久精品视频| 人人妻人人澡人人爽人人dvl| 国产又色又刺激在线视频| 精品视频一区二区三区四区五区| 国产美女一区在线观看| 久草视频 久草视频2| 欧亚日韩一区二区三区观看视频| 亚洲国产欧美国产综合在线| 大黑人性xxxxbbbb| 经典国语激情内射视频| 成人激情文学网人妻| 精品一区二区三区三区色爱| 国产精品人妻66p| 欧亚乱色一区二区三区| 三级av中文字幕在线观看| 免费在线看的黄网站| av网址国产在线观看| 国产超码片内射在线| 久久精品国产23696| 视频一区二区在线免费播放| 青青在线视频性感少妇和隔壁黑丝| 亚洲伊人久久精品影院一美女洗澡| 又粗又硬又猛又黄免费30| 在线观看国产网站资源| 亚洲一级av无码一级久久精品| 老司机深夜免费福利视频在线观看| 91国内精品久久久久精品一| 中文字幕免费福利视频6| 一区二区三区av高清免费| 欧美特色aaa大片| 欧美成人猛片aaaaaaa| 欧美少妇性一区二区三区| 2022国产精品视频| 又粗又长 明星操逼小视频| 国产成人精品av网站| 2o22av在线视频| 成人sm视频在线观看| 摧残蹂躏av一二三区| 在线免费91激情四射 | 亚洲 图片 欧美 图片| 亚洲国产第一页在线观看| 久久麻豆亚洲精品av| 天天摸天天亲天天舔天天操天天爽| 夫妻在线观看视频91| 国产精品国产三级国产精东 | 岛国一区二区三区视频在线| 黄色无码鸡吧操逼视频| 91九色porny蝌蚪国产成人| 天天夜天天日天天日| 成人H精品动漫在线无码播放| 午夜精品一区二区三区4| 日本一区二区三区免费小视频| 年轻的人妻被夫上司侵犯| 免费在线播放a级片| sw137 中文字幕 在线| 欧美日本在线视频一区| 日本后入视频在线观看| 年轻的人妻被夫上司侵犯| 成人资源在线观看免费官网| 日韩av中文在线免费观看| 国产高清在线在线视频| 午夜美女少妇福利视频| 国产精品一区二区三区蜜臀av | 在线不卡成人黄色精品| 5528327男人天堂| 快点插进来操我逼啊视频| 91九色porny国产蝌蚪视频| 午夜福利资源综合激情午夜福利资| 成人高清在线观看视频| 亚洲成a人片777777| 国产精品sm调教视频| 天干天天天色天天日天天射| 国产揄拍高清国内精品对白| 国产精品黄色的av| 日韩熟女系列一区二区三区| 在线观看视频网站麻豆| 亚洲精品精品国产综合| 精品人妻伦一二三区久| 免费一级黄色av网站| 九一传媒制片厂视频在线免费观看| 初美沙希中文字幕在线| 国产九色91在线观看精品| 亚洲自拍偷拍综合色| 六月婷婷激情一区二区三区| 521精品视频在线观看| 精品一区二区亚洲欧美| 亚洲精品国偷自产在线观看蜜桃| 国产精品日韩欧美一区二区| 动漫精品视频在线观看| 韩国黄色一级二级三级| 欧美精品免费aaaaaa| 国产亚洲精品欧洲在线观看| 性感美女高潮视频久久久| 在线播放 日韩 av| 午夜91一区二区三区| 亚洲欧美一区二区三区爱爱动图| 久久农村老妇乱69系列| 久久久久久久精品成人热| 91色老99久久九九爱精品| 91天堂天天日天天操| 青青青青草手机在线视频免费看| 亚洲欧美国产麻豆综合| 国产一区二区久久久裸臀| 午夜免费观看精品视频| 欧美va不卡视频在线观看| 播放日本一区二区三区电影| 天天摸天天干天天操科普| 在线观看视频网站麻豆| 亚洲精品午夜久久久久| 日本人妻少妇18—xx| 中文字幕日韩精品就在这里| 国产性生活中老年人视频网站| 午夜精品福利一区二区三区p| 黄色三级网站免费下载| 国产女人露脸高潮对白视频| 久草视频在线看免费| 人妻丝袜av在线播放网址| 免费无码人妻日韩精品一区二区| 亚洲午夜电影在线观看| av在线观看网址av| 岛国毛片视频免费在线观看| 九色视频在线观看免费| 亚洲av第国产精品| 老司机午夜精品视频资源| 福利视频网久久91| 天天干天天爱天天色| 中国熟女一区二区性xx| 国产熟妇一区二区三区av | 曰本无码人妻丰满熟妇啪啪| 丝袜肉丝一区二区三区四区在线| 在线免费观看亚洲精品电影| 中文字幕中文字幕人妻| 亚洲一区二区三区在线高清| 亚洲伊人久久精品影院一美女洗澡| av在线资源中文字幕| 日本高清在线不卡一区二区| 国产揄拍高清国内精品对白| 91桃色成人网络在线观看| 中文人妻AV久久人妻水| 亚洲熟色妇av日韩熟色妇在线| 亚洲精品中文字幕下载| 亚洲精品在线资源站| 欧美3p在线观看一区二区三区| 91精品激情五月婷婷在线| 早川濑里奈av黑人番号| 日韩人妻xxxxx| 亚欧在线视频你懂的| 欧美久久久久久三级网| 国产精品污污污久久| 亚洲精品麻豆免费在线观看| 国产免费高清视频视频| 国产剧情演绎系列丝袜高跟| 丰满少妇人妻xxxxx| 欧美精品伦理三区四区| 午夜精品一区二区三区城中村| 热99re69精品8在线播放| 久久久久五月天丁香社区| 欧美精产国品一二三产品区别大吗| 国产日韩精品一二三区久久久 | 国产美女精品福利在线| 91精品国产麻豆国产| 秋霞午夜av福利经典影视| 日美女屁股黄邑视频| 色婷婷六月亚洲综合香蕉| 青青草亚洲国产精品视频| 欧美视频中文一区二区三区| 精品亚洲国产中文自在线| 黄色视频成年人免费观看| a v欧美一区=区三区| 日韩美女福利视频网| 久草视频中文字幕在线观看| 久久机热/这里只有| 中文字幕在线免费第一页| 中文字幕熟女人妻久久久| 中国黄片视频一区91| 中文字幕之无码色多多| 欧美特色aaa大片| 精品亚洲在线免费观看| 国产日韩精品一二三区久久久| 可以免费看的www视频你懂的| 69精品视频一区二区在线观看| 成年人午夜黄片视频资源| 欧美怡红院视频在线观看| 日韩激情文学在线视频| 一区二区免费高清黄色视频| 二区中出在线观看老师| 国产女人被做到高潮免费视频| 人妻熟女在线一区二区| 欧美精品 日韩国产| 久久久久久久精品成人热| 熟妇一区二区三区高清版| 免费黄高清无码国产| 天天通天天透天天插| 久久综合老鸭窝色综合久久 | 91国内视频在线观看| 沈阳熟妇28厘米大战黑人| 动漫美女的小穴视频| 欧美成人综合色在线噜噜| 亚洲另类伦春色综合小| 免费无码人妻日韩精品一区二区| 97人人妻人人澡人人爽人人精品| 人妻少妇亚洲精品中文字幕| 夜夜嗨av蜜臀av| 77久久久久国产精产品| 国产在线自在拍91国语自产精品 | 性欧美日本大妈母与子| 性色蜜臀av一区二区三区| 亚洲在线一区二区欧美| 视频一区二区三区高清在线| 亚洲国产在人线放午夜| 在线观看操大逼视频| 日韩北条麻妃一区在线| 伊人日日日草夜夜草| 亚洲粉嫩av一区二区三区| 日本午夜爽爽爽爽爽视频在线观看| 第一福利视频在线观看| 3337p日本欧洲大胆色噜噜| 中文字幕日韩人妻在线三区| 五十路息与子猛烈交尾视频| 国产精品欧美日韩区二区| 鸡巴操逼一级黄色气| 欧美乱妇无乱码一区二区| 亚洲成人国产av在线| 桃色视频在线观看一区二区| 午夜毛片不卡免费观看视频| 日韩av中文在线免费观看| 亚洲欧洲av天堂综合| 综合精品久久久久97| 91免费观看国产免费| 偷拍美女一区二区三区| 免费男阳茎伸入女阳道视频| 91精品综合久久久久3d动漫| 欧美国产亚洲中英文字幕| 88成人免费av网站| 亚洲图片偷拍自拍区| 黄色视频在线观看高清无码| 一级黄色av在线观看| 黑人3p华裔熟女普通话| 动漫精品视频在线观看| 中文字幕一区二区自拍| 日美女屁股黄邑视频| 超碰在线观看免费在线观看| 好太好爽好想要免费| 中文字幕一区二区三区人妻大片| 天天做天天干天天操天天射| 2022中文字幕在线| 午夜免费体验区在线观看| 亚洲 中文 自拍 另类 欧美| 精品一线二线三线日本| 懂色av之国产精品| 97少妇精品在线观看| 亚洲一区二区三区精品乱码| 黄色成年网站午夜在线观看 | 亚洲 中文 自拍 另类 欧美| 亚洲在线免费h观看网站| 精品suv一区二区69| 成年美女黄网站18禁久久| 青娱乐极品视频青青草| 国产亚洲成人免费在线观看| 色狠狠av线不卡香蕉一区二区 | 久久www免费人成一看片| 国产亚洲成人免费在线观看| 操的小逼流水的文章| av在线免费观看亚洲天堂| 狠狠地躁夜夜躁日日躁| avjpm亚洲伊人久久| 国产成人午夜精品福利| 老鸭窝在线观看一区| 亚洲中文字幕校园春色| 91人妻精品一区二区久久| 国产在线拍揄自揄视频网站| 国产日韩一区二区在线看| 天天操,天天干,天天射| 亚洲久久午夜av一区二区| 99一区二区在线观看| 中文字幕乱码人妻电影| 亚洲午夜电影之麻豆| 999九九久久久精品| 换爱交换乱高清大片| 中国黄片视频一区91| 欧美日本aⅴ免费视频| 亚洲自拍偷拍精品网|