国产无遮挡裸体免费直播视频,久久精品国产蜜臀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

最新評論

中文字幕人妻一区二区视频 | 亚洲伊人久久精品影院一美女洗澡| 亚洲成人精品女人久久久| 亚洲欧美国产麻豆综合| 精品91高清在线观看| 99精品国产免费久久| 亚洲激情av一区二区| 精品人妻每日一部精品| 天干天天天色天天日天天射| 日韩a级黄色小视频| 久久久人妻一区二区| 亚洲少妇人妻无码精品| 男女第一次视频在线观看| 日韩近亲视频在线观看| 2021久久免费视频| 国产精品人久久久久久| 亚洲综合色在线免费观看| 亚洲成人国产综合一区| 久久精品亚洲成在人线a| 欧美一区二区三区四区性视频| 国产一区二区在线欧美| 丁香花免费在线观看中文字幕| 久久热久久视频在线观看| 9久在线视频只有精品| 亚洲卡1卡2卡三卡四老狼| 激情五月婷婷综合色啪| 91亚洲手机在线视频播放| 人人爽亚洲av人人爽av| 免费在线观看视频啪啪| 小穴多水久久精品免费看| 视频一区二区综合精品| 久久精品国产999| 中文字幕第三十八页久久| 国产成人午夜精品福利| av一区二区三区人妻| 国产又大又黄免费观看| 婷婷久久久综合中文字幕| 精产国品久久一二三产区区别| 自拍偷拍日韩欧美亚洲| 成人24小时免费视频| AV天堂一区二区免费试看| 香港三日本三韩国三欧美三级| av新中文天堂在线网址| 国产日本精品久久久久久久| 熟女俱乐部一二三区| 欧美色呦呦最新网址| 亚洲精品在线资源站| 精品91高清在线观看| 国产熟妇人妻ⅹxxxx麻豆| 97人妻夜夜爽二区欧美极品| 亚洲精品一线二线在线观看| av网站色偷偷婷婷网男人的天堂| sw137 中文字幕 在线| 青青青国产免费视频| 亚洲国产精品免费在线观看| 国产一区二区欧美三区| 中文字幕一区二区人妻电影冢本| 精品一区二区三四区| 亚洲另类在线免费观看| 久久这里只有精品热视频 | 激情伦理欧美日韩中文字幕| 99精品视频在线观看婷婷| 天堂av在线最新版在线| 亚洲av人人澡人人爽人人爱| 视频一区 二区 三区 综合| 欧美精品激情在线最新观看视频| 日日爽天天干夜夜操| 天天日天天鲁天天操| 性欧美日本大妈母与子| 亚洲的电影一区二区三区| 欧美一区二区中文字幕电影 | 三上悠亚和黑人665番号| 精品av国产一区二区三区四区| 欧美成人黄片一区二区三区| 成人H精品动漫在线无码播放| 黄色视频成年人免费观看| 亚洲精品三级av在线免费观看| 亚洲女人的天堂av| 91国内精品自线在拍白富美| 亚洲自拍偷拍综合色| 国产成人精品一区在线观看| 亚洲高清一区二区三区视频在线| 中文字幕在线永久免费播放| 男人和女人激情视频| 成人色综合中文字幕| 天天日夜夜干天天操| 日韩剧情片电影在线收看| 亚洲另类综合一区小说| 国产日本欧美亚洲精品视| 免费观看理论片完整版| 国产三级片久久久久久久| 99热久久这里只有精品8| 中文字幕 码 在线视频| 98精产国品一二三产区区别| 视频一区 视频二区 视频| 中文字幕一区二区三区蜜月| 国产福利在线视频一区| 毛片一级完整版免费| 精品一区二区三区三区色爱| 中文字幕av第1页中文字幕| 91超碰青青中文字幕| 少妇被强干到高潮视频在线观看| 夜夜嗨av一区二区三区中文字幕| 自拍偷拍,中文字幕| 五月婷婷在线观看视频免费| 成人av免费不卡在线观看| 国产亚洲欧美另类在线观看| 又色又爽又黄又刺激av网站| 在线国产日韩欧美视频| 中文字幕免费在线免费| 亚洲国产第一页在线观看| 成人乱码一区二区三区av| 天天干天天操天天玩天天射| 狠狠的往里顶撞h百合| 91亚洲手机在线视频播放| 在线亚洲天堂色播av电影| 人妻久久无码中文成人| 伊人综合aⅴ在线网| 久久精品久久精品亚洲人| 福利视频一区二区三区筱慧| 欧美女同性恋免费a| 又色又爽又黄的美女裸体| 日视频免费在线观看| 亚洲精品国品乱码久久久久| 亚洲第一伊人天堂网| 91 亚洲视频在线观看| 天天操天天插天天色| 久久久久91精品推荐99| 国产三级片久久久久久久| 哥哥姐姐综合激情小说| 亚洲国产成人最新资源| 国产在线观看黄色视频| 国产亚洲欧美45p| 天天操天天污天天射| 亚洲综合一区成人在线| 91 亚洲视频在线观看| 亚洲视频在线视频看视频在线| 亚洲精品久久综合久| 成人蜜桃美臀九一一区二区三区| 精品一区二区三区三区88| 免费十精品十国产网站| 一级a看免费观看网站| 欧美色呦呦最新网址| 天天日天天透天天操| 国产精品久久久黄网站| 一区二区三区四区视频在线播放| 精品91高清在线观看| 国产一区二区久久久裸臀| 2025年人妻中文字幕乱码在线| 成人H精品动漫在线无码播放| av天堂中文字幕最新| 日韩三级黄色片网站| 九色精品视频在线播放| 国产午夜福利av导航| 自拍偷拍 国产资源| 91色秘乱一区二区三区| 天天日夜夜操天天摸| 日韩激情文学在线视频| 综合激情网激情五月天| 综合页自拍视频在线播放| 欧美成一区二区三区四区| 91精品一区二区三区站长推荐| av手机在线观播放网站| 综合色区亚洲熟妇shxstz| xxx日本hd高清| 日本丰满熟妇大屁股久久| 亚洲av午夜免费观看| 啊用力插好舒服视频| 婷婷激情四射在线观看视频| 97人妻无码AV碰碰视频| okirakuhuhu在线观看| 日韩中文字幕在线播放第二页| 日本性感美女视频网站| 免费黄高清无码国产| 色爱av一区二区三区| 国产实拍勾搭女技师av在线| 视频一区二区综合精品| 天堂中文字幕翔田av| 日日夜夜狠狠干视频| 日韩a级精品一区二区| 国产中文精品在线观看| 欧美精品一区二区三区xxxx| 午夜久久久久久久99| 大黑人性xxxxbbbb| 国产女人被做到高潮免费视频| 动色av一区二区三区| 久久久久久久精品成人热| 成熟熟女国产精品一区| 任你操任你干精品在线视频| 国产午夜亚洲精品不卡在线观看| 老师啊太大了啊啊啊尻视频| 天天操,天天干,天天射| 青青社区2国产视频| 国产中文精品在线观看| 啪啪啪啪啪啪啪啪啪啪黄色| 亚洲成人熟妇一区二区三区| 中文字幕日本人妻中出| 91极品大一女神正在播放| 国产九色91在线视频| 天码人妻一区二区三区在线看| 亚洲高清国产一区二区三区| 日韩美女综合中文字幕pp| 午夜精品在线视频一区| 色天天天天射天天舔| 国产成人无码精品久久久电影| 日本www中文字幕| 都市家庭人妻激情自拍视频| 91试看福利一分钟| 嫩草aⅴ一区二区三区| 日日爽天天干夜夜操| 直接能看的国产av| 国产1区,2区,3区| 日本免费视频午夜福利视频| 老司机99精品视频在线观看| 欧美一级色视频美日韩| 超碰97人人澡人人| 91九色porny蝌蚪国产成人| 亚洲av极品精品在线观看| 色呦呦视频在线观看视频| 国产一线二线三线的区别在哪| 亚洲的电影一区二区三区| 青青青视频手机在线观看| 91高清成人在线视频| 好了av中文字幕在线| 日韩av免费观看一区| 亚洲精品麻豆免费在线观看| 国产精品久久久久国产三级试频| 岛国av高清在线成人在线| 超污视频在线观看污污污| 中文字幕免费福利视频6| 国产精品国产三级麻豆| 搡老妇人老女人老熟女| 亚洲av午夜免费观看| 天堂中文字幕翔田av| 好太好爽好想要免费| 国产极品精品免费视频| 2020韩国午夜女主播在线| 精品亚洲国产中文自在线| 亚洲欧美另类手机在线| 狠狠操操操操操操操操操| 嫩草aⅴ一区二区三区| 姐姐的朋友2在线观看中文字幕| 93精品视频在线观看 | 人妻激情图片视频小说| av在线免费观看亚洲天堂| av天堂中文免费在线| 在线免费91激情四射| 久久久精品欧洲亚洲av| 丁香花免费在线观看中文字幕| av中文字幕网址在线| 亚洲va欧美va人人爽3p| 国产成人午夜精品福利| 天天操,天天干,天天射| 男大肉棒猛烈插女免费视频| 在线免费观看视频一二区| 日本少妇在线视频大香蕉在线观看| 色综合久久五月色婷婷综合| 91免费观看在线网站| 97成人免费在线观看网站| 国产精品自拍视频大全| 男大肉棒猛烈插女免费视频| 日韩a级黄色小视频| 亚洲2021av天堂| 99热这里只有国产精品6| 啊慢点鸡巴太大了啊舒服视频| 欧美一级片免费在线成人观看 | 亚洲另类综合一区小说| 超碰公开大香蕉97| 99久久超碰人妻国产| 日本免费一级黄色录像 | 性欧美激情久久久久久久| 18禁美女黄网站色大片下载| 2021最新热播中文字幕| 亚洲高清视频在线不卡| 亚洲熟妇无码一区二区三区| 日本高清在线不卡一区二区 | 国产一区二区三免费视频| 一级黄色片夫妻性生活| 中国视频一区二区三区| 国产又粗又猛又爽又黄的视频在线 | 日韩欧美在线观看不卡一区二区| 国产成人精品午夜福利训2021| 成人资源在线观看免费官网| 人妻激情图片视频小说| 中文字幕日韩91人妻在线| 亚洲美女美妇久久字幕组| 中国黄色av一级片| 操日韩美女视频在线免费看| 国产成人小视频在线观看无遮挡| 性欧美激情久久久久久久| 午夜国产免费福利av| 人人妻人人人操人人人爽| 2020国产在线不卡视频| 蜜臀av久久久久久久| 国产麻豆91在线视频| 欧美国品一二三产区区别| 国产亚州色婷婷久久99精品| 日韩欧美制服诱惑一区在线| 天天干天天操天天插天天日| 亚洲粉嫩av一区二区三区| 青青色国产视频在线| 国产揄拍高清国内精品对白| 91免费黄片可看视频| 最近中文2019年在线看| 精品国产在线手机在线| 欧美一级视频一区二区| 男生用鸡操女生视频动漫| 精品首页在线观看视频| 在线免费观看亚洲精品电影| 开心 色 六月 婷婷| 3344免费偷拍视频| 国产性感美女福利视频| 日本午夜爽爽爽爽爽视频在线观看| 玩弄人妻熟妇性色av少妇| 国产卡一卡二卡三乱码手机| 青青伊人一精品视频| 国产不卡av在线免费| 日本少妇高清视频xxxxx| 好吊视频—区二区三区| 国产va在线观看精品| 亚洲激情,偷拍视频| 成人资源在线观看免费官网| 免费男阳茎伸入女阳道视频| 在线国产精品一区二区三区| 亚洲日本一区二区三区 | 水蜜桃一区二区三区在线观看视频| 国产av福利网址大全| 青青草精品在线视频观看| caoporm超碰国产| 初美沙希中文字幕在线| 欧美男人大鸡吧插女人视频| 曰本无码人妻丰满熟妇啪啪| 亚洲熟妇x久久av久久| 亚欧在线视频你懂的| 国内精品在线播放第一页| 亚洲综合图片20p| 青青青青青青青青青青草青青| 18禁污污污app下载| 亚洲精品福利网站图片| 国产午夜亚洲精品麻豆| 日本丰满熟妇BBXBBXHD| 五十路息与子猛烈交尾视频| 欧美特级特黄a大片免费| 可以免费看的www视频你懂的| 欧美激情电影免费在线| avjpm亚洲伊人久久| 操操网操操伊剧情片中文字幕网| 国产麻豆精品人妻av| 免费手机黄页网址大全| 100%美女蜜桃视频| av在线shipin| 美女被肏内射视频网站| 韩国AV无码不卡在线播放| 亚洲2021av天堂| 色哟哟国产精品入口| 在线新三级黄伊人网| 97少妇精品在线观看| 人妻少妇一区二区三区蜜桃| 99精品免费观看视频| 日韩美女综合中文字幕pp| 另类av十亚洲av| 日韩精品激情在线观看| 天天日天天爽天天爽| 亚洲国产精品久久久久蜜桃| 成人网18免费视频版国产| 91人妻人人做人人爽在线| 国产成人无码精品久久久电影| 人人妻人人澡欧美91精品| 国产黑丝高跟鞋视频在线播放| 精品一区二区三区三区色爱| 狍和女人的王色毛片| 2020韩国午夜女主播在线| 在线亚洲天堂色播av电影| weyvv5国产成人精品的视频| 91精品一区二区三区站长推荐| 欧美一区二区中文字幕电影 | 精品人妻一二三区久久| 久草福利电影在线观看| 日韩美av高清在线| asmr福利视频在线观看| 少妇人妻久久久久视频黄片| 1区2区3区4区视频在线观看| 日韩成人综艺在线播放| 日本熟妇丰满厨房55| 人人妻人人人操人人人爽| 亚洲嫩模一区二区三区| 中文字幕无码日韩专区免费| 白白操白白色在线免费视频 | 成年人的在线免费视频| 男生用鸡操女生视频动漫| 青青草成人福利电影| 91精品国产观看免费| 少妇系列一区二区三区视频| 大陆av手机在线观看| 天天干天天操天天爽天天摸| 久久久久五月天丁香社区| 人妻凌辱欧美丰满熟妇| 馒头大胆亚洲一区二区| 亚洲午夜伦理视频在线| 精品黑人一区二区三区久久国产| 最新国产精品拍在线观看| 中文字幕一区二区自拍| 日本人妻少妇18—xx| 九色精品视频在线播放| 成人sm视频在线观看| 国产1区,2区,3区| 人妻丝袜诱惑我操她视频| 97人妻总资源视频| 天堂av在线播放免费| 日韩av有码中文字幕| 2019av在线视频| 1区2区3区不卡视频| 91国产在线免费播放| 青娱乐在线免费视频盛宴| 亚洲午夜伦理视频在线| 午夜美女少妇福利视频| ka0ri在线视频| 久草极品美女视频在线观看| 狍和女人的王色毛片| 亚洲成人国产综合一区| 亚洲av自拍天堂网| 久久三久久三久久三久久| 99国内小视频在现欢看| 国产极品精品免费视频| 人妻少妇性色欲欧美日韩| 精品国产成人亚洲午夜| 国产成人午夜精品福利| 亚洲av黄色在线网站| 国产一区二区久久久裸臀| 51国产偷自视频在线播放| 欧美在线精品一区二区三区视频 | 免费黄页网站4188| yy6080国产在线视频| 国产精品探花熟女在线观看| 9l人妻人人爽人人爽| 又色又爽又黄又刺激av网站| 亚洲麻豆一区二区三区| yy6080国产在线视频| 日韩精品电影亚洲一区| 亚洲伊人久久精品影院一美女洗澡| 久久这里只有精品热视频 | 五十路熟女av天堂| 欧美一区二区三区在线资源| 亚洲图片偷拍自拍区| 人妻少妇性色欲欧美日韩| 亚洲精品三级av在线免费观看| 熟女俱乐部一二三区| 国产精品sm调教视频| 在线播放国产黄色av| 亚洲成人国产综合一区| 亚洲国产欧美国产综合在线| 精品91高清在线观看| 最新国产亚洲精品中文在线| 人妻丰满熟妇综合网| 亚洲高清国产拍青青草原| 91精品激情五月婷婷在线| 男人插女人视频网站| 亚洲第一黄色在线观看 | 91精品综合久久久久3d动漫| 亚洲av第国产精品| 97a片免费在线观看| 51国产偷自视频在线播放 | av在线免费观看亚洲天堂| 国产视频在线视频播放| 美女张开腿让男生操在线看| 国产乱子伦一二三区| yellow在线播放av啊啊啊| 日韩中文字幕精品淫| 午夜在线精品偷拍一区二| 中文字幕乱码人妻电影| 免费高清自慰一区二区三区网站| 中文字幕日本人妻中出| 欧美3p在线观看一区二区三区| 可以免费看的www视频你懂的| 在线视频这里只有精品自拍| 亚洲av在线观看尤物| 在线观看操大逼视频| 中文字幕人妻被公上司喝醉在线| 性感美女高潮视频久久久| 亚洲无线观看国产高清在线| 国产一区二区久久久裸臀| 成人sm视频在线观看| 国产精品国产三级国产午| 日韩伦理短片在线观看| 人妻丝袜精品中文字幕| 亚洲一区制服丝袜美腿| 日本特级片中文字幕| 91精品资源免费观看| 国产美女一区在线观看| 亚洲成a人片777777| 男女啪啪啪啪啪的网站| 天天干天天操天天扣| 日视频免费在线观看| 亚洲综合图片20p| 老司机免费视频网站在线看| 欧美va亚洲va天堂va| 国产精品久久久久国产三级试频| 91人妻精品一区二区在线看| 首之国产AV医生和护士小芳| 亚洲va欧美va人人爽3p| 40道精品招牌菜特色| 欧美韩国日本国产亚洲| 97人妻总资源视频| 国产一区二区视频观看| 亚洲午夜伦理视频在线| av在线观看网址av| 人妻久久久精品69系列| 91欧美在线免费观看| 中文字幕熟女人妻久久久| 熟女人妻在线观看视频| 精品一区二区三区欧美| 亚洲美女美妇久久字幕组| 日本丰满熟妇BBXBBXHD| 国产成人精品久久二区91| 欧美成人小视频在线免费看| 男人和女人激情视频| 瑟瑟视频在线观看免费视频| 中文字幕成人日韩欧美| 亚洲va国产va欧美va在线| 国产精品国产精品一区二区| 天天干天天日天天干天天操| 天天操天天射天天操天天天| 日本男女操逼视频免费看| 欧美成一区二区三区四区| 在线免费观看99视频| 91精品视频在线观看免费| 亚洲免费在线视频网站| eeuss鲁片一区二区三区| 国产亚洲成人免费在线观看| 亚洲人妻30pwc| 大学生A级毛片免费视频| 亚国产成人精品久久久| 成人av中文字幕一区| 欧美日韩v中文在线| 偷青青国产精品青青在线观看| 欧美精品免费aaaaaa| aⅴ五十路av熟女中出| gay gay男男瑟瑟在线网站| 在线观看亚洲人成免费网址| 香港一级特黄大片在线播放 | 插小穴高清无码中文字幕| 老司机99精品视频在线观看| 在线视频精品你懂的| 换爱交换乱高清大片| 99热这里只有国产精品6| 2021久久免费视频| 久久久久久久亚洲午夜综合福利| 免费看美女脱光衣服的视频| 男女啪啪啪啪啪的网站| 91av中文视频在线| 91福利视频免费在线观看| 婷婷久久一区二区字幕网址你懂得| 偷拍自拍福利视频在线观看| 欧美日本国产自视大全| 在线观看国产网站资源| av网址国产在线观看| 欧美专区第八页一区在线播放| 欧美激情精品在线观看| 男人在床上插女人视频| 91精品国产综合久久久蜜| 2021天天色天天干| 最新91精品视频在线| 国产一区成人在线观看视频| 亚洲国际青青操综合网站| 一区二区三区久久中文字幕| av一区二区三区人妻| 天天干天天操天天爽天天摸| 中国老熟女偷拍第一页| 中文字幕—97超碰网| 亚洲少妇人妻无码精品| 香港三日本三韩国三欧美三级| 欧美精品 日韩国产| 老司机福利精品免费视频一区二区| 蜜桃视频入口久久久| 亚洲av极品精品在线观看| 中国黄色av一级片| 超污视频在线观看污污污 | 又色又爽又黄又刺激av网站| 日韩在线视频观看有码在线| 中文字幕在线观看国产片| 日本熟妇丰满厨房55| 久久久精品精品视频视频| 在线观看av亚洲情色| 国产中文精品在线观看| 亚洲欧美在线视频第一页| 日韩美在线观看视频黄| 日韩欧美在线观看不卡一区二区| 日本啪啪啪啪啪啪啪| 天天干夜夜操天天舔| 欧美精产国品一二三产品区别大吗| 97香蕉碰碰人妻国产樱花| 亚洲精品色在线观看视频| 老司机午夜精品视频资源| 天天做天天干天天舔| 日韩一个色综合导航| 99热99这里精品6国产| 沈阳熟妇28厘米大战黑人| 成人乱码一区二区三区av| 2021年国产精品自拍| 欧美3p在线观看一区二区三区| 中国无遮挡白丝袜二区精品| 亚洲麻豆一区二区三区| 超碰公开大香蕉97| 免费在线福利小视频| 亚洲推理片免费看网站| 丝袜长腿第一页在线| 欧美日韩高清午夜蜜桃大香蕉| 欧美一区二区三区高清不卡tv | 欧美成人精品在线观看| 精品区一区二区三区四区人妻| 久久久制服丝袜中文字幕| 欧美另类重口味极品在线观看| heyzo蜜桃熟女人妻| 精品一区二区三区午夜| 亚洲福利精品福利精品福利| 红桃av成人在线观看| 99久久超碰人妻国产| 日本美女成人在线视频| 在线观看日韩激情视频| 亚洲av日韩精品久久久久久hd| 亚洲欧美激情国产综合久久久| 果冻传媒av一区二区三区| 99热碰碰热精品a中文| 狠狠躁狠狠爱网站视频| 久久一区二区三区人妻欧美| 国产日韩精品电影7777| 久久午夜夜伦痒痒想咳嗽P| 亚洲午夜伦理视频在线| 大香蕉伊人国产在线| 欧美性感尤物人妻在线免费看| 中文字幕日韩精品就在这里| 一区二区三区久久久91| 99热这里只有国产精品6| 又粗又硬又猛又黄免费30| 国产精品久久久久久久精品视频| 青青青国产片免费观看视频| 欧美一区二区三区在线资源| 岛国毛片视频免费在线观看| 成人动漫大肉棒插进去视频| 日本在线不卡免费视频| 日韩精品一区二区三区在线播放| 日日操综合成人av| 午夜在线一区二区免费| 亚洲人成精品久久久久久久| 中文 成人 在线 视频| 精品一区二区三区午夜| 黄色大片免费观看网站| 国产精品黄页网站视频| 久久这里只有精品热视频 | 毛片av在线免费看| 国产精品视频资源在线播放 | 日韩精品中文字幕播放| 国产综合视频在线看片| 大香蕉大香蕉大香蕉大香蕉大香蕉| 欧美一区二区三区乱码在线播放 | 亚洲av极品精品在线观看| 成人国产小视频在线观看| 欧美精产国品一二三区| 天天操天天干天天插| 精品美女福利在线观看| 中国产一级黄片免费视频播放| 神马午夜在线观看视频| 男女第一次视频在线观看| 东游记中文字幕版哪里可以看到| 黄色的网站在线免费看| 亚洲精品国产综合久久久久久久久 | 欧美80老妇人性视频| 鸡巴操逼一级黄色气| 美女张开腿让男生操在线看| 91chinese在线视频| 国产精品久久久久网| 亚洲 中文 自拍 另类 欧美| 中文字幕在线永久免费播放| 2018最新中文字幕在线观看| 亚洲一区二区三区五区 | 97精品综合久久在线| 热99re69精品8在线播放| 青青青青青青青青青青草青青| 日本一区二区三区免费小视频| 成人18禁网站在线播放| 亚洲精品午夜久久久久| 夜夜躁狠狠躁日日躁麻豆内射 | 欧美国产亚洲中英文字幕| 日韩熟女系列一区二区三区| 成年人啪啪视频在线观看| 超碰在线中文字幕一区二区| 亚洲一区二区三区精品乱码| 国产日韩精品电影7777| 久久精品国产23696| 大香蕉玖玖一区2区| 天天射夜夜操狠狠干| 99一区二区在线观看| yy6080国产在线视频| 亚洲欧美成人综合视频| 国产日本精品久久久久久久| 中文字幕+中文字幕| 五十路息与子猛烈交尾视频| 综合精品久久久久97| 欧美日韩人妻久久精品高清国产 | 成人免费公开视频无毒| 天天摸天天日天天操| 久久精品久久精品亚洲人| 大鸡八强奸视频在线观看| 欧美成人综合视频一区二区| 亚洲欧美成人综合视频| 一区二区在线视频中文字幕| 最新中文字幕免费视频| 2022天天干天天操| 黄色资源视频网站日韩| 在线网站你懂得老司机| 经典国语激情内射视频| 欧美专区第八页一区在线播放| 国产激情av网站在线观看| 亚洲一区二区三区久久受| 人妻自拍视频中国大陆| 91综合久久亚洲综合| 亚洲成人av在线一区二区| 成人精品视频99第一页| 亚洲av第国产精品| 1769国产精品视频免费观看| 亚洲国产精品美女在线观看| 国产福利在线视频一区| 国产综合高清在线观看| 欧美老鸡巴日小嫩逼| 888欧美视频在线| 亚洲中文字字幕乱码| 自拍偷区二区三区麻豆| 懂色av蜜桃a v| 国产又粗又硬又猛的毛片视频| 精品一线二线三线日本| 在线观看911精品国产| heyzo蜜桃熟女人妻| aⅴ精产国品一二三产品| 伊人网中文字幕在线视频| 免费男阳茎伸入女阳道视频| 真实国模和老外性视频| 91精品一区二区三区站长推荐| 91国内精品自线在拍白富美| 欧洲亚洲欧美日韩综合| 青娱乐极品视频青青草| 精品一区二区三区午夜| 亚洲欧美一区二区三区电影| 久草视频在线一区二区三区资源站 | 亚洲一区二区人妻av| 天天操,天天干,天天射| 欧美80老妇人性视频| 天天日天天天天天天天天天天| 国产一区二区三免费视频| 91九色国产熟女一区二区| 青青青青青免费视频| 99热国产精品666| 天堂女人av一区二区| 三级等保密码要求条款| 亚洲熟妇久久无码精品| 国产日韩欧美视频在线导航| 欧美色婷婷综合在线| sejizz在线视频| 天天操天天弄天天射| 超碰在线中文字幕一区二区| 直接观看免费黄网站| 久久久久久久久久一区二区三区| 97精品成人一区二区三区| 久久久噜噜噜久久熟女av| 自拍 日韩 欧美激情| 免费在线播放a级片| 红桃av成人在线观看| 中文字幕成人日韩欧美| 人妻丝袜榨强中文字幕| 久久一区二区三区人妻欧美| 亚洲国产欧美国产综合在线| 亚洲伊人色一综合网| 欧美精品免费aaaaaa| 亚洲公开视频在线观看| 天天操夜夜骑日日摸| 美女少妇亚洲精选av| 男人天堂最新地址av| 日本韩国免费福利精品| 人人超碰国字幕观看97| 伊人网中文字幕在线视频| 2020久久躁狠狠躁夜夜躁| 中文字幕 亚洲av| 欧美地区一二三专区| mm131美女午夜爽爽爽| 日本少妇高清视频xxxxx| 免费黄页网站4188| 国语对白xxxx乱大交| 欧美一区二区三区在线资源| 男生用鸡操女生视频动漫 | 在线国产中文字幕视频| 自拍偷区二区三区麻豆| 一区二区三区四区视频| 一区二区三区综合视频| 国产性色生活片毛片春晓精品 | 99久久99一区二区三区| 国产伊人免费在线播放| 人妻无码色噜噜狠狠狠狠色| 亚洲高清国产拍青青草原| 老师啊太大了啊啊啊尻视频| 国产黄色高清资源在线免费观看 | 超碰97人人做人人爱| 欧美亚洲牲夜夜综合久久| av中文字幕在线观看第三页| www,久久久,com| 欧美国产亚洲中英文字幕| 亚洲国产成人av在线一区| 91超碰青青中文字幕| 日韩欧美中文国产在线| av新中文天堂在线网址| 免费人成黄页网站在线观看国产| 在线播放一区二区三区Av无码| 制丝袜业一区二区三区| 日韩精品中文字幕福利| 人妻凌辱欧美丰满熟妇| 99精品视频在线观看婷婷| 综合激情网激情五月五月婷婷| 国产91嫩草久久成人在线视频| 亚洲视频在线视频看视频在线| av亚洲中文天堂字幕网| 不卡精品视频在线观看| 亚洲精品国产综合久久久久久久久 | 亚洲福利天堂久久久久久| 日日夜夜大香蕉伊人| 老司机福利精品免费视频一区二区 | 人人妻人人人操人人人爽| 日本一区精品视频在线观看| 亚洲国产最大av综合| 国产一区二区火爆视频| 成人30分钟免费视频| 玩弄人妻熟妇性色av少妇| 久久久超爽一二三av| 精品久久婷婷免费视频| 国产精品国产三级国产午| 97人妻人人澡爽人人精品| 少妇人妻真实精品视频| 韩国一级特黄大片做受| av在线shipin| 国产精品成人xxxx| 中文字幕AV在线免费看 | 精品视频中文字幕在线播放| 一区二区熟女人妻视频| 粉嫩av蜜乳av蜜臀| 中文字幕在线欧美精品| 99精品视频在线观看婷婷| 亚洲午夜精品小视频| 18禁美女羞羞免费网站| 午夜精品福利91av| 免费在线观看视频啪啪| 国产91嫩草久久成人在线视频| 少妇高潮无套内谢麻豆| 午夜在线观看岛国av,com| 免费看国产av网站| 成人亚洲精品国产精品| 精品久久久久久久久久久99| nagger可以指黑人吗| 日韩国产乱码中文字幕| 午夜福利资源综合激情午夜福利资| 青青草视频手机免费在线观看| 999九九久久久精品| 亚洲免费福利一区二区三区| 中文字幕无码日韩专区免费| 国产视频精品资源网站| 国产使劲操在线播放| 护士特殊服务久久久久久久| 亚洲熟女综合色一区二区三区四区| 亚洲成人av一区在线| 国产女孩喷水在线观看| 午夜精品福利91av| 天天干狠狠干天天操| 国产福利小视频大全| 久久精品国产23696| 自拍偷拍,中文字幕| 午夜婷婷在线观看视频| 99精品视频之69精品视频| 成人免费做爰高潮视频| 天天摸天天干天天操科普| 男人操女人的逼免费视频| 日本一二三区不卡无| 精品人妻一二三区久久| 日韩欧美一级aa大片| 欧美日韩精品永久免费网址| 亚洲中文精品人人免费| 欧美成人综合色在线噜噜| 又色又爽又黄又刺激av网站| gav成人免费播放| 1000部国产精品成人观看视频| 亚洲护士一区二区三区| 亚洲女人的天堂av| 色婷婷久久久久swag精品| 91高清成人在线视频| av俺也去在线播放| 免费在线播放a级片| 美女小视频网站在线| 国产精品sm调教视频| 最新97国产在线视频| 美女小视频网站在线| 影音先锋女人av噜噜色| 99久久99久国产黄毛片| 成人亚洲国产综合精品| 亚洲高清免费在线观看视频| 家庭女教师中文字幕在线播放| 亚洲免费va在线播放| 天天躁夜夜躁日日躁a麻豆| 日本www中文字幕| 亚洲av琪琪男人的天堂| 成人国产小视频在线观看| 日本黄色特一级视频| 欧美地区一二三专区| 欧美老鸡巴日小嫩逼| 日辽宁老肥女在线观看视频| 岛国一区二区三区视频在线| 一区二区在线观看少妇| 青青青青青手机视频| 青青草人人妻人人妻| 啊啊好大好爽啊啊操我啊啊视频| 国产av福利网址大全| 亚洲国产美女一区二区三区软件| 91国内视频在线观看| 黄色成年网站午夜在线观看 | 日美女屁股黄邑视频| 九一传媒制片厂视频在线免费观看| 欧洲精品第一页欧洲精品亚洲| 国产精品自拍偷拍a| 黑人性生活视频免费看| 老熟妇凹凸淫老妇女av在线观看| 视频 国产 精品 熟女 | 久久久久久久久久久免费女人| 东游记中文字幕版哪里可以看到| 在线观看免费av网址大全| 黄色男人的天堂视频| 欧美一级视频一区二区| 天天日天天爽天天干| 日韩精品啪啪视频一道免费| 丝袜美腿欧美另类 中文字幕| 亚洲国产美女一区二区三区软件| 北条麻妃肉色丝袜视频| 国产精品人妻66p| 人人妻人人爽人人添夜| 欧美老妇精品另类不卡片| av网址在线播放大全| 亚洲男人在线天堂网| 一色桃子久久精品亚洲| 成人免费毛片aaaa| 在线视频免费观看网| 91精品国产91青青碰| 97人妻夜夜爽二区欧美极品| 精品一区二区三区在线观看| 欧美日韩情色在线观看| heyzo蜜桃熟女人妻| 91精品高清一区二区三区| 国产成人精品一区在线观看| 2025年人妻中文字幕乱码在线| av俺也去在线播放| 伊人情人综合成人久久网小说| 一区二区三区四区中文| 在线网站你懂得老司机| 亚洲国产成人在线一区| 色97视频在线播放| 水蜜桃国产一区二区三区| 国际av大片在线免费观看| 最近中文字幕国产在线| 精品久久久久久久久久久a√国产| 免费男阳茎伸入女阳道视频| 在线免费观看黄页视频| 亚洲变态另类色图天堂网| 国产福利小视频大全| 色综合天天综合网国产成人| 亚洲av日韩高清hd| 天天干天天爱天天色| 99精品一区二区三区的区| 亚洲成人激情av在线| 欧美一区二区三区激情啪啪啪 | 狠狠躁狠狠爱网站视频| 中文字幕人妻熟女在线电影| 动漫精品视频在线观看| 极品性荡少妇一区二区色欲| 福利视频广场一区二区| 性生活第二下硬不起来| 亚洲综合另类精品小说| 老鸭窝日韩精品视频观看| 99久久激情婷婷综合五月天| 天堂av狠狠操蜜桃| 亚洲国产欧美一区二区三区久久| 快插进小逼里大鸡吧视频| 中文字幕最新久久久| 视频 国产 精品 熟女 | 亚洲成人av一区在线| 特大黑人巨大xxxx| 班长撕开乳罩揉我胸好爽| 亚洲成人午夜电影在线观看| 国产超码片内射在线| 欧美3p在线观看一区二区三区| 2022中文字幕在线| av久久精品北条麻妃av观看| 91啪国自产中文字幕在线| 天堂中文字幕翔田av | 不卡日韩av在线观看| 天堂v男人视频在线观看| 午夜精品福利一区二区三区p | 国产精品系列在线观看一区二区| 好了av中文字幕在线| 中文字幕亚洲中文字幕| 国产日韩精品免费在线| 黄色大片男人操女人逼| 啪啪啪操人视频在线播放| 亚洲高清国产自产av| 精品人妻每日一部精品| 97欧洲一区二区精品免费| 国产视频在线视频播放| av老司机精品在线观看| 欧美另类一区二区视频| 一区二区三区综合视频| av中文字幕网址在线| av一区二区三区人妻| 超碰公开大香蕉97| 中文字幕+中文字幕| 东京干手机福利视频| 国产女人被做到高潮免费视频| 国产乱子伦一二三区| 五月天中文字幕内射| 97年大学生大白天操逼| 伊人综合免费在线视频| 中文字幕在线乱码一区二区| 适合午夜一个人看的视频| 首之国产AV医生和护士小芳| 亚洲欧美另类自拍偷拍色图| 动漫黑丝美女的鸡巴| 亚洲特黄aaaa片| 激情小视频国产在线| 黄片色呦呦视频免费看| 国产一区自拍黄视频免费观看| 亚洲精品成人网久久久久久小说| 初美沙希中文字幕在线| 亚洲高清国产一区二区三区| 黄网十四区丁香社区激情五月天| 中文字幕 亚洲av| 97欧洲一区二区精品免费| 日本性感美女写真视频| 婷婷色中文亚洲网68| 国产成人精品一区在线观看| 成熟熟女国产精品一区| 亚洲一级av大片免费观看| 亚洲欧美清纯唯美另类| 40道精品招牌菜特色| 亚洲av色香蕉一区二区三区| 99久久超碰人妻国产| 成人av中文字幕一区| 男生用鸡操女生视频动漫| 亚洲精品无码久久久久不卡| 少妇被强干到高潮视频在线观看 | 中国产一级黄片免费视频播放| 韩国AV无码不卡在线播放| 丝袜美腿视频诱惑亚洲无 | 亚洲精品 欧美日韩| 视频 一区二区在线观看| 香蕉91一区二区三区| 女同性ⅹxx女同h偷拍| 精品久久久久久久久久久久人妻| 视频 一区二区在线观看| 熟女国产一区亚洲中文字幕| 精品欧美一区二区vr在线观看| 亚洲va国产va欧美va在线| 一区二区三区蜜臀在线| 91老熟女连续高潮对白| jul—619中文字幕在线| 2022精品久久久久久中文字幕| 91亚洲国产成人精品性色| 久久久噜噜噜久久熟女av| 美洲精品一二三产区区别| 亚洲 自拍 色综合图| 阿v天堂2014 一区亚洲| 亚洲精品久久综合久| eeuss鲁片一区二区三区| 91福利视频免费在线观看| av无限看熟女人妻另类av| 欧美成人猛片aaaaaaa| 综合国产成人在线观看| 人妻少妇中文有码精品| 天天干天天爱天天色| 国产真实灌醉下药美女av福利| 国产麻豆剧果冻传媒app| 中文字幕高清在线免费播放| 五月激情婷婷久久综合网| 偷拍自拍视频图片免费| 欧美成人综合色在线噜噜| 欧美一区二区三区乱码在线播放| 日本一区精品视频在线观看| 人妻少妇性色欲欧美日韩 | 大尺度激情四射网站| 自拍偷拍日韩欧美一区二区| 黄色大片免费观看网站| 天天日天天日天天射天天干| 小泽玛利亚视频在线观看| 啊啊好慢点插舔我逼啊啊啊视频| 中文字幕之无码色多多| 亚洲av成人免费网站| 亚洲日本一区二区三区| 亚洲高清国产拍青青草原| chinese国产盗摄一区二区| 九一传媒制片厂视频在线免费观看| 家庭女教师中文字幕在线播放| 强行扒开双腿猛烈进入免费版| 亚洲福利精品福利精品福利| 制服丝袜在线人妻中文字幕| 日本熟妇喷水xxx| 欲满人妻中文字幕在线| 亚洲高清国产拍青青草原| 美女日逼视频免费观看| 欧美 亚洲 另类综合| 成人午夜电影在线观看 久久| 少妇深喉口爆吞精韩国| 欧美美女人体视频一区| 精品日产卡一卡二卡国色天香| 国产日韩精品一二三区久久久| 视频在线亚洲一区二区| 天天操天天弄天天射| 免费69视频在线看| 人妻丝袜精品中文字幕| 成熟丰满熟妇高潮xx×xx| 国产熟妇乱妇熟色T区| 欧美80老妇人性视频| 中文字幕欧美日韩射射一| 在线视频国产欧美日韩| 黄片三级三级三级在线观看 | 日本免费视频午夜福利视频| 美女少妇亚洲精选av| 精品区一区二区三区四区人妻| 男女啪啪啪啪啪的网站| 97人妻无码AV碰碰视频| 欧美女同性恋免费a| 成年人啪啪视频在线观看| 动漫黑丝美女的鸡巴| 亚洲护士一区二区三区| 欧美成人精品在线观看| 日本成人不卡一区二区| 日韩近亲视频在线观看| 五月婷婷在线观看视频免费| 精品人妻伦一二三区久| 黑人乱偷人妻中文字幕| 91色网站免费在线观看| 中文字幕在线观看国产片| 超碰在线中文字幕一区二区| 婷婷久久久综合中文字幕| 亚洲 国产 成人 在线| 国产a级毛久久久久精品| 日本av高清免费网站| 国产成人综合一区2区| 黄色在线观看免费观看在线| 国产91嫩草久久成人在线视频| 国产黄色片在线收看| 亚洲一级av无码一级久久精品| 亚洲成人线上免费视频观看| 天天操天天污天天射| 成人色综合中文字幕| 久久精品国产999| 真实国产乱子伦一区二区| 亚洲欧美国产综合777| 1区2区3区不卡视频| 91在线免费观看成人| 97精品人妻一区二区三区精品| 午夜免费观看精品视频| 国产一线二线三线的区别在哪| 国产精彩福利精品视频| 欧美地区一二三专区| 人人妻人人澡欧美91精品| 亚洲一级av无码一级久久精品| 一级黄色av在线观看| 国产精品久久久久久久女人18| 日本人妻少妇18—xx| 在线免费观看视频一二区| 一区二区三区日本伦理| 大鸡吧插逼逼视频免费看 | 亚洲自拍偷拍精品网| 男女第一次视频在线观看| 免费大片在线观看视频网站| 久久久久久久久久性潮| 黄色片一级美女黄色片| 视频在线免费观看你懂得| 亚洲天堂第一页中文字幕| 天堂av狠狠操蜜桃| 中文字幕中文字幕人妻| 亚洲女人的天堂av| 国产91嫩草久久成人在线视频| 欧美中文字幕一区最新网址| 免费在线福利小视频| 老司机福利精品免费视频一区二区 | 亚洲精品午夜aaa久久| 2021天天色天天干| 一区二区熟女人妻视频| 天天日天天干天天要 | www日韩毛片av| 亚洲在线观看中文字幕av| 日韩美女精品视频在线观看网站| 蜜桃精品久久久一区二区| 福利在线视频网址导航| 91久久人澡人人添人人爽乱| 国产亚洲视频在线二区| 女同性ⅹxx女同h偷拍| 乱亲女秽乱长久久久| 久久这里只有精品热视频| 少妇人妻100系列| 免费成人av中文字幕| 天天干天天插天天谢| 欧美一区二区三区高清不卡tv| 欧美精品欧美极品欧美视频| 日韩三级黄色片网站| 在线观看的a站 最新| 国产亚洲成人免费在线观看| 五十路熟女人妻一区二区9933| 男人天堂色男人av| 97人妻总资源视频| 成年人的在线免费视频| 中文字幕人妻av在线观看| 偷拍自拍 中文字幕| 久草视频首页在线观看| 夜夜操,天天操,狠狠操| 一区二区三区美女毛片| 淫秽激情视频免费观看| 人妻爱爱 中文字幕| 777奇米久久精品一区| 亚洲天堂有码中文字幕视频| 日韩精品啪啪视频一道免费| 日韩二区视频一线天婷婷五| 在线国产中文字幕视频| 成人影片高清在线观看| 亚洲精品无码色午夜福利理论片| 国产免费高清视频视频| av在线免费中文字幕| 精品国产成人亚洲午夜| 一区二区免费高清黄色视频| 久久热久久视频在线观看| 中文字幕人妻av在线观看| 亚洲一区自拍高清免费视频| 免费在线看的黄网站| 美女av色播在线播放| 国产性感美女福利视频| 亚洲美女高潮喷浆视频| 福利视频一区二区三区筱慧 | 成年人啪啪视频在线观看| 日韩精品激情在线观看| 国产激情av网站在线观看| 国产97视频在线精品| 国产午夜亚洲精品麻豆| www日韩毛片av| 伊人日日日草夜夜草| 亚洲av成人网在线观看| 岛国毛片视频免费在线观看| 久久这里有免费精品| 国产在线一区二区三区麻酥酥| 久久香蕉国产免费天天| 黑人乱偷人妻中文字幕| 人妻丝袜精品中文字幕| 人妻激情图片视频小说| 免费男阳茎伸入女阳道视频| 亚洲国产40页第21页| 老有所依在线观看完整版 | 97精品成人一区二区三区| 999九九久久久精品| 日本成人一区二区不卡免费在线| 精品国产在线手机在线| 亚洲一区av中文字幕在线观看| 国产免费高清视频视频| 非洲黑人一级特黄片| 不卡精品视频在线观看| 久久一区二区三区人妻欧美| 国产女人被做到高潮免费视频 | 国产乱子伦精品视频潮优女| 93视频一区二区三区| 亚洲一区二区三区久久午夜| 中文字幕av第1页中文字幕| 久久久超爽一二三av| 一区二区视频视频视频| 久久久久久久久久久久久97| 国产一区av澳门在线观看| 精品老妇女久久9g国产| 亚洲国产最大av综合| 一区二区熟女人妻视频| 色呦呦视频在线观看视频| 黄色av网站免费在线| 一区二区三区蜜臀在线| 国产激情av网站在线观看| 天天操夜夜操天天操天天操| 蜜桃臀av蜜桃臀av| 成人av久久精品一区二区| 日本精品视频不卡一二三| 日韩一区二区电国产精品| 在线免费91激情四射 | 欧美黑人性暴力猛交喷水| 一区二区视频视频视频| 天天日天天干天天要| 亚洲天堂有码中文字幕视频| 中文字幕在线第一页成人| 中文字幕AV在线免费看 | 综合页自拍视频在线播放| 久草视频在线一区二区三区资源站 | 激情五月婷婷免费视频| 78色精品一区二区三区| 亚洲精品三级av在线免费观看 | av资源中文字幕在线观看| 亚洲图库另类图片区| 五十路丰满人妻熟妇| 特一级特级黄色网片| 91天堂精品一区二区| 久久三久久三久久三久久| 天天干天天操天天扣| 女同性ⅹxx女同h偷拍| 中文字幕欧美日韩射射一| 亚洲av男人的天堂你懂的| 人人妻人人澡欧美91精品| 日本一二三中文字幕| 99视频精品全部15| 久久热这里这里只有精品| 国产精品一区二区久久久av| 2021最新热播中文字幕| 少妇一区二区三区久久久| 女警官打开双腿沦为性奴| 蝴蝶伊人久久中文娱乐网| 综合国产成人在线观看| 欧亚日韩一区二区三区观看视频| 丰满少妇人妻xxxxx| 亚洲精品国产综合久久久久久久久| 亚洲国产中文字幕啊啊啊不行了| gogo国模私拍视频| 国产亚洲精品视频合集| 青青青青草手机在线视频免费看 | 日韩精品激情在线观看| av网站色偷偷婷婷网男人的天堂| 顶级尤物粉嫩小尤物网站| 国产日韩精品免费在线| av亚洲中文天堂字幕网| 欧美激情电影免费在线| 亚洲免费在线视频网站| 亚洲av黄色在线网站| 久久久久久久一区二区三| 激情色图一区二区三区| 在线播放 日韩 av| 日韩一区二区三区三州| 久久www免费人成一看片| 成人免费公开视频无毒| 人妻少妇性色欲欧美日韩| 都市家庭人妻激情自拍视频| 黄色大片免费观看网站| 国产日韩欧美视频在线导航 | 99精品国自产在线人| 亚洲免费av在线视频| 亚洲人一区二区中文字幕| 老熟妇xxxhd老熟女| 国产精品三级三级三级| 日本18禁久久久久久| 亚洲va天堂va国产va久| 国产精品探花熟女在线观看| 亚洲av无女神免非久久| 丝袜肉丝一区二区三区四区在线| 欧美成人一二三在线网| 大鸡巴操娇小玲珑的女孩逼| 亚洲精品亚洲人成在线导航| 亚洲欧美另类自拍偷拍色图| 日本在线不卡免费视频| 亚洲av自拍天堂网| 亚洲最大黄 嗯色 操 啊| 国产午夜激情福利小视频在线| 丝袜美腿视频诱惑亚洲无| 黄色成年网站午夜在线观看| 91试看福利一分钟| 色婷婷精品大在线观看| 香港三日本三韩国三欧美三级| 日韩精品啪啪视频一道免费| 欧美国产亚洲中英文字幕| 亚洲精品高清自拍av| 精品欧美一区二区vr在线观看| 不卡精品视频在线观看| 国产又粗又猛又爽又黄的视频在线| 亚洲一区自拍高清免费视频| 国产麻豆精品人妻av| 91 亚洲视频在线观看| 1000部国产精品成人观看视频| 亚洲va国产va欧美va在线| 午夜精品福利91av| 亚洲成人免费看电影| 91小伙伴中女熟女高潮| 成人国产激情自拍三区| 中文字幕视频一区二区在线观看| 日韩欧美在线观看不卡一区二区| 午夜精彩视频免费一区| 中文字幕无码一区二区免费| 岛国一区二区三区视频在线| 97国产在线av精品| 亚洲老熟妇日本老妇| 一二三中文乱码亚洲乱码one| 无码日韩人妻精品久久| 91精品一区二区三区站长推荐| 亚洲欧美在线视频第一页| 中文字幕视频一区二区在线观看| 久久免看30视频口爆视频| 亚洲图片偷拍自拍区| 激情五月婷婷综合色啪| 亚洲午夜福利中文乱码字幕| rct470中文字幕在线| 日韩人妻xxxxx| 青青青青青青青青青国产精品视频| 日日夜夜精品一二三| 狠狠鲁狠狠操天天晚上干干| 日韩a级黄色小视频| 免费观看成年人视频在线观看| 伊人网中文字幕在线视频| 啊慢点鸡巴太大了啊舒服视频| 欧美viboss性丰满| 视频一区 二区 三区 综合| 社区自拍揄拍尻屁你懂的| 亚洲1卡2卡三卡4卡在线观看| 黄色在线观看免费观看在线| 成人蜜桃美臀九一一区二区三区| 午夜大尺度无码福利视频| 99热这里只有精品中文| 日韩无码国产精品强奸乱伦| 人妻激情图片视频小说| 日韩精品中文字幕播放| 日韩成人性色生活片| 又大又湿又爽又紧A视频| 快插进小逼里大鸡吧视频| 六月婷婷激情一区二区三区| 欧美日韩国产一区二区三区三州 | 国产使劲操在线播放| 在线播放一区二区三区Av无码| 做爰视频毛片下载蜜桃视频1| 国产va在线观看精品| 人人妻人人爱人人草| 在线观看视频污一区| 红杏久久av人妻一区| 91久久国产成人免费网站| 人人妻人人爽人人添夜| 把腿张开让我插进去视频| 日韩a级精品一区二区| 日韩欧美国产精品91| 在线国产中文字幕视频| 日本少妇在线视频大香蕉在线观看| 日韩欧美亚洲熟女人妻| 青青青青在线视频免费观看| 一区国内二区日韩三区欧美| 888亚洲欧美国产va在线播放| 国产精品人妻一区二区三区网站| 国产精品成久久久久三级蜜臀av| 大屁股肉感人妻中文字幕在线| 成人av久久精品一区二区| 一区二区三区av高清免费| 人妻丝袜诱惑我操她视频| 日本av在线一区二区三区| 欧美成人综合视频一区二区| 亚洲av男人天堂久久| 日本脱亚入欧是指什么| 国产+亚洲+欧美+另类| 啪啪啪18禁一区二区三区| 久久这里只有精彩视频免费| 欧美偷拍自拍色图片| 91九色porny国产蝌蚪视频| 日韩一个色综合导航| 免费看国产av网站| 天天干天天插天天谢| 伊人网中文字幕在线视频| 老司机福利精品免费视频一区二区 | 骚逼被大屌狂草视频免费看| 日韩av中文在线免费观看| 中文字幕人妻熟女在线电影| 国产女孩喷水在线观看| 女蜜桃臀紧身瑜伽裤| 熟女俱乐部一二三区| 亚洲午夜高清在线观看| 毛片av在线免费看| 91亚洲国产成人精品性色| av高潮迭起在线观看| 绯色av蜜臀vs少妇| 国产性生活中老年人视频网站| 亚洲国产精品免费在线观看| 中文字幕在线观看国产片| 欧美特色aaa大片| 一级a看免费观看网站| 亚洲欧美久久久久久久久| aiss午夜免费视频| 免费在线黄色观看网站| 中国无遮挡白丝袜二区精品| 在线观看视频 你懂的| 国产精品自拍在线视频| 亚洲护士一区二区三区| 人妻久久无码中文成人| 成人精品在线观看视频| 亚洲一区二区三区五区| 在线成人日韩av电影| 日韩av大胆在线观看| 老司机你懂得福利视频| 国内资源最丰富的网站| 爱有来生高清在线中文字幕| 一区二区三区av高清免费| 欧美80老妇人性视频| 亚洲最大黄 嗯色 操 啊| 99热久久这里只有精品8| 青青在线视频性感少妇和隔壁黑丝 | 91亚洲精品干熟女蜜桃频道| 女蜜桃臀紧身瑜伽裤| 亚洲公开视频在线观看| 午夜的视频在线观看| av视屏免费在线播放| 夜夜操,天天操,狠狠操| 91人妻精品一区二区久久| 91精品高清一区二区三区| ka0ri在线视频| 黄色黄色黄片78在线| 中文字幕乱码人妻电影| 中文字幕熟女人妻久久久| 国产高清女主播在线| 午夜激情高清在线观看| 婷婷久久久综合中文字幕| 国产91嫩草久久成人在线视频| av一区二区三区人妻| 欧美日本在线观看一区二区| 97小视频人妻一区二区| 国产女孩喷水在线观看| 三上悠亚和黑人665番号| 91免费观看在线网站| 中出中文字幕在线观看| 国产黄色片在线收看| 久久久久久99国产精品| 国产一区二区神马久久| 天天操夜夜骑日日摸| 亚洲人成精品久久久久久久| 好了av中文字幕在线| 青青草人人妻人人妻| 91免费观看在线网站| 日本一区精品视频在线观看| 美女骚逼日出水来了| 晚上一个人看操B片| 一区二区三区激情在线| 亚洲成人熟妇一区二区三区| 国产污污污污网站在线| 日韩伦理短片在线观看| 国产精品国产三级国产午| 春色激情网欧美成人| 一色桃子人妻一区二区三区| 日韩欧美制服诱惑一区在线| 久久这里有免费精品| 中文字幕一区二区三区人妻大片| 视频二区在线视频观看| 又大又湿又爽又紧A视频| 成人色综合中文字幕| 丰满少妇翘臀后进式| 国产精品人妻一区二区三区网站 | 黑人3p华裔熟女普通话| 国产成人精品一区在线观看| 999久久久久999| 欧美一区二区中文字幕电影| 男生舔女生逼逼的视频| 免费看国产又粗又猛又爽又黄视频| 北条麻妃高跟丝袜啪啪| 极品性荡少妇一区二区色欲| 社区自拍揄拍尻屁你懂的| 国语对白xxxx乱大交| 日韩欧美国产一区不卡| 丝袜国产专区在线观看| 久草极品美女视频在线观看| 天天干天天操天天扣| 偷拍自拍亚洲美腿丝袜| 国产精品系列在线观看一区二区 | 只有精品亚洲视频在线观看| 日韩二区视频一线天婷婷五| 国产乱子伦一二三区| 亚洲一区二区人妻av| 最新日韩av传媒在线| 青青青国产免费视频| 欧美韩国日本国产亚洲| 91天堂精品一区二区| 蜜桃久久久久久久人妻| 91免费福利网91麻豆国产精品 | 2021久久免费视频| 亚洲精品 欧美日韩| 国产高清97在线观看视频| 夫妻在线观看视频91| 插逼视频双插洞国产操逼插洞| 亚洲精品av在线观看| 国产露脸对白在线观看| 日本黄色特一级视频| 亚洲国产中文字幕啊啊啊不行了 | 91p0rny九色露脸熟女| 99热这里只有国产精品6| 亚洲欧美一卡二卡三卡| 一区二区视频视频视频| 日本黄色三级高清视频| 久久香蕉国产免费天天| 欧美另类一区二区视频| 91久久精品色伊人6882| 日本精品一区二区三区在线视频。| 欧美成人精品在线观看| 日韩av有码一区二区三区4| 国产+亚洲+欧美+另类| 亚洲美女自偷自拍11页| 欧美视频不卡一区四区| a v欧美一区=区三区| 青青青青青青青青青青草青青| 2021最新热播中文字幕| 婷婷色中文亚洲网68| 欧美在线精品一区二区三区视频| 国产成人无码精品久久久电影| 啪啪啪啪啪啪啪啪av| 亚洲精品三级av在线免费观看| 国产麻豆剧果冻传媒app| 色av色婷婷人妻久久久精品高清 | 国产精品国产三级麻豆| 中国视频一区二区三区| 亚洲av无乱一区二区三区性色| 国产在线免费观看成人| 激情综合治理六月婷婷| 国产日本精品久久久久久久| 国产+亚洲+欧美+另类| 78色精品一区二区三区| 国产黑丝高跟鞋视频在线播放| 97人人模人人爽人人喊| 青草亚洲视频在线观看| 美女在线观看日本亚洲一区| 视频 一区二区在线观看| 91试看福利一分钟| 日本一二三中文字幕| 久久久久久久一区二区三| 91国产在线免费播放| 亚洲成人av在线一区二区| 五月婷婷在线观看视频免费| 91国内精品久久久久精品一| 日本少妇精品免费视频| 超碰中文字幕免费观看| 亚洲av香蕉一区区二区三区犇| av天堂中文字幕最新| 中文字幕人妻av在线观看| 999久久久久999| 亚洲国产欧美一区二区三区…| yellow在线播放av啊啊啊| 亚洲中文字幕综合小综合| www骚国产精品视频| 97人人妻人人澡人人爽人人精品| 99一区二区在线观看| 精品一区二区三四区| 99精品亚洲av无码国产另类| 97精品成人一区二区三区 | 久久精品美女免费视频| 我想看操逼黄色大片| 国产亚洲视频在线二区| 国产性生活中老年人视频网站| 国产又粗又硬又大视频| 最新欧美一二三视频| 亚洲麻豆一区二区三区| 国产成人精品av网站| av无限看熟女人妻另类av| 成年人黄色片免费网站| 亚洲综合一区二区精品久久| 婷婷激情四射在线观看视频| 天天做天天干天天舔| 亚洲综合图片20p| 色秀欧美视频第一页| 国产老熟女伦老熟妇ⅹ| 9色精品视频在线观看| 丰满的子国产在线观看| 久久丁香婷婷六月天| 蜜臀av久久久久久久| 爱有来生高清在线中文字幕| 1000部国产精品成人观看视频| 人妻少妇性色欲欧美日韩| 一个色综合男人天堂| 国内自拍第一页在线观看| 久久三久久三久久三久久| 色综合久久五月色婷婷综合| 久久久久久cao我的性感人妻| 亚洲乱码中文字幕在线| 蜜桃久久久久久久人妻| 欧美另类一区二区视频| 日韩不卡中文在线视频网站| 日韩人妻在线视频免费| 亚洲另类伦春色综合小| 888欧美视频在线| 97人人模人人爽人人喊| 在线观看av2025| 欧美视频不卡一区四区| 在线可以看的视频你懂的| 最新中文字幕免费视频| 天天操天天插天天色| 少妇深喉口爆吞精韩国| 综合一区二区三区蜜臀| 亚洲精品av在线观看| 免费一级黄色av网站| 亚洲一区二区三区五区| 75国产综合在线视频| 超级av免费观看一区二区三区| 中国把吊插入阴蒂的视频| 欧美一区二区三区四区性视频| 成人区人妻精品一区二视频| 男女之间激情网午夜在线| av老司机精品在线观看| 国产综合视频在线看片| 婷婷激情四射在线观看视频| 亚洲偷自拍高清视频| av新中文天堂在线网址| 久久免费看少妇高潮完整版| 久久机热/这里只有| 黄色成人在线中文字幕| 色综合久久无码中文字幕波多| 91av精品视频在线| 欧美日本aⅴ免费视频| 久草极品美女视频在线观看| 四虎永久在线精品免费区二区| 韩国三级aaaaa高清视频| 国产精品亚洲在线观看| 日日爽天天干夜夜操| 精品suv一区二区69| 三级等保密码要求条款| 蜜桃久久久久久久人妻| 日视频免费在线观看| 五十路熟女人妻一区二区9933| 亚洲丝袜老师诱惑在线观看| 天天日天天舔天天射进去| 日本三极片视频网站观看| 狠狠地躁夜夜躁日日躁| 韩国AV无码不卡在线播放| 大肉大捧一进一出好爽在线视频| jiuse91九色视频| 在线观看免费av网址大全| 久久精品36亚洲精品束缚| 伊人成人综合开心网| 欧美久久久久久三级网| 欧美日韩激情啪啪啪| 中文字幕一区的人妻欧美日韩| 懂色av之国产精品| 中文字幕最新久久久| 福利一二三在线视频观看| 老司机午夜精品视频资源| 亚洲免费国产在线日韩| 91啪国自产中文字幕在线| 78色精品一区二区三区| 亚洲最大黄 嗯色 操 啊| 一色桃子久久精品亚洲 | 亚洲欧美国产综合777| 亚洲天堂av最新网址| 国产在线91观看免费观看| wwwxxx一级黄色片| 大香蕉玖玖一区2区| 中文字幕免费在线免费| 青青草人人妻人人妻| 青青青青青操视频在线观看| 五十路熟女人妻一区二| 天天日天天舔天天射进去| 日本一二三区不卡无| 熟女人妻在线观看视频| 精品一区二区三四区| 香蕉av影视在线观看| 中文字幕AV在线免费看 | 91免费放福利在线观看| 欧美亚洲中文字幕一区二区三区 | 蜜桃专区一区二区在线观看| 欧美少妇性一区二区三区| 亚洲1区2区3区精华液| 日韩精品中文字幕福利| 天天躁日日躁狠狠躁躁欧美av| 2021天天色天天干| 91免费观看国产免费| 亚洲在线一区二区欧美| 青青青视频自偷自拍38碰| 97年大学生大白天操逼| 丝袜美腿欧美另类 中文字幕| 精内国产乱码久久久久久| 精品少妇一二三视频在线| 中文 成人 在线 视频| 午夜av一区二区三区| 丝袜美腿欧美另类 中文字幕| 亚洲av午夜免费观看| 欧美天堂av无线av欧美| 免费看高清av的网站| 亚洲美女自偷自拍11页| 国产成人精品午夜福利训2021| 2012中文字幕在线高清| 岛国毛片视频免费在线观看| 亚洲熟妇x久久av久久| 欧美亚洲国产成人免费在线| 人妻少妇亚洲一区二区| 青青青视频手机在线观看| 99精品视频在线观看婷婷| 硬鸡巴动态操女人逼视频| 亚洲熟女综合色一区二区三区四区| 黑人乱偷人妻中文字幕| 国产精品久久综合久久| 天天日天天添天天爽| 国产无遮挡裸体免费直播视频| 精彩视频99免费在线| 99精品国产aⅴ在线观看| 18禁美女无遮挡免费| 国产精品自拍偷拍a| 亚洲Av无码国产综合色区| 男人操女人的逼免费视频| 亚洲精品乱码久久久本| 精品视频中文字幕在线播放 | 国产妇女自拍区在线观看| 1769国产精品视频免费观看| 中文字幕亚洲久久久| av中文字幕在线观看第三页| 亚洲欧美自拍另类图片| 国产之丝袜脚在线一区二区三区| 欧美亚洲自偷自拍 在线| 免费在线观看视频啪啪 | 亚洲青青操骚货在线视频| 久久这里只有精品热视频| 亚洲av无码成人精品区辽| 骚货自慰被发现爆操| 中文字幕人妻熟女在线电影| 日韩成人综艺在线播放| av天堂资源最新版在线看| 久草视频在线免播放| av在线shipin| 日本脱亚入欧是指什么| 年轻的人妻被夫上司侵犯| 国产一区二区火爆视频| 男人和女人激情视频| 女蜜桃臀紧身瑜伽裤| 又色又爽又黄的美女裸体| 91片黄在线观看喷潮| 中文字幕高清资源站| 美日韩在线视频免费看| 精品国产午夜视频一区二区| 大白屁股精品视频国产| 国产使劲操在线播放| 黄色三级网站免费下载| 蜜桃视频在线欧美一区| 国产精品黄色的av| 亚洲图片欧美校园春色| 精品一区二区三区三区色爱| 久久久超爽一二三av| 国产夫妻视频在线观看免费 | 日本精品美女在线观看| 97资源人妻免费在线视频| 2019av在线视频| 性感美女诱惑福利视频| 91天堂精品一区二区| 337p日本大胆欧美人| 自拍偷拍日韩欧美一区二区| 青娱乐最新视频在线| 亚洲精品乱码久久久本| 在线免费视频 自拍| 2017亚洲男人天堂| 亚洲熟色妇av日韩熟色妇在线| 亚洲 清纯 国产com| 少妇被强干到高潮视频在线观看| 青青擦在线视频国产在线| 水蜜桃一区二区三区在线观看视频| 91国偷自产一区二区三区精品| 啪啪啪啪啪啪啪啪啪啪黄色| 馒头大胆亚洲一区二区| 青青青aaaa免费| 绯色av蜜臀vs少妇| 国产精品黄片免费在线观看| 日本熟女精品一区二区三区| 高清成人av一区三区| 国产乱弄免费视频观看| 一区二区三区美女毛片| 国产伦精品一区二区三区竹菊| 骚货自慰被发现爆操| 欧美80老妇人性视频| 熟妇一区二区三区高清版| 国产欧美精品不卡在线| 日韩人妻xxxxx| 亚洲成人激情视频免费观看了| 视频 国产 精品 熟女 | 中国产一级黄片免费视频播放| 天天干天天日天天干天天操| 国产97视频在线精品| 91极品新人『兔兔』精品新作| 亚洲伊人久久精品影院一美女洗澡 | 喷水视频在线观看这里只有精品| 3D动漫精品啪啪一区二区下载 | 欧美80老妇人性视频| 日美女屁股黄邑视频| 精品高跟鞋丝袜一区二区| 香蕉aⅴ一区二区三区| 青草亚洲视频在线观看| 93精品视频在线观看| 成人动漫大肉棒插进去视频| 含骚鸡巴玩逼逼视频| 99久久中文字幕一本人| 青青青aaaa免费| 91综合久久亚洲综合| av一本二本在线观看| 99视频精品全部15| 福利视频一区二区三区筱慧| 日韩伦理短片在线观看| AV天堂一区二区免费试看| 天天色天天操天天透| 啪啪啪啪啪啪啪免费视频| 亚洲国产第一页在线观看| 淫秽激情视频免费观看| 都市家庭人妻激情自拍视频| 综合一区二区三区蜜臀| 黄色黄色黄片78在线| 年轻的人妻被夫上司侵犯| 午夜毛片不卡免费观看视频| aaa久久久久久久久| 少妇高潮无套内谢麻豆| 欧美 亚洲 另类综合| 93精品视频在线观看| 538精品在线观看视频| 国内自拍第一页在线观看| 国产九色91在线视频| 成人区人妻精品一区二视频| 男人的网址你懂的亚洲欧洲av| 狠狠躁夜夜躁人人爽天天天天97| 密臀av一区在线观看| 亚洲精品国产在线电影| 97香蕉碰碰人妻国产樱花| 精品黑人巨大在线一区| 天天艹天天干天天操| 久久久久久cao我的性感人妻| 亚洲精品乱码久久久久久密桃明| 中文字幕一区二区人妻电影冢本| 男人的网址你懂的亚洲欧洲av| 日本在线不卡免费视频| 午夜精品亚洲精品五月色| 大香蕉大香蕉在线看| 97人人妻人人澡人人爽人人精品| 黑人乱偷人妻中文字幕| 在线观看911精品国产| 国产亚洲精品品视频在线| 99re6热在线精品| 国产福利小视频免费观看| 午夜国产福利在线观看| 91亚洲精品干熟女蜜桃频道 | 好吊操视频这里只有精品| 黑人借宿ntr人妻的沦陷2| 美女在线观看日本亚洲一区| 成人av久久精品一区二区| aⅴ五十路av熟女中出| 国产黄色高清资源在线免费观看| 成熟丰满熟妇高潮xx×xx| 日韩人妻丝袜中文字幕| 在线新三级黄伊人网| 色天天天天射天天舔| 搡老妇人老女人老熟女| 东京干手机福利视频| 女警官打开双腿沦为性奴| 午夜精品久久久久久99热| 免费黄色成人午夜在线网站| 亚洲成人熟妇一区二区三区 | 成人在线欧美日韩国产| 懂色av之国产精品| 国产精彩对白一区二区三区| 亚洲高清国产一区二区三区| 久久精品亚洲成在人线a| 人妻少妇性色欲欧美日韩| 黄色视频成年人免费观看| 亚洲最大黄 嗯色 操 啊| 欧美区一区二区三视频| 一区二区视频视频视频| 亚洲一级 片内射视正片| 少妇露脸深喉口爆吞精| 北条麻妃av在线免费观看| 色爱av一区二区三区| 国产亚洲视频在线二区| 亚洲av极品精品在线观看| 欧美亚洲国产成人免费在线| 亚洲中文字幕国产日韩| 天天做天天干天天舔| av资源中文字幕在线观看| 福利视频一区二区三区筱慧| 97精品成人一区二区三区| 综合精品久久久久97| 9色在线视频免费观看| 强行扒开双腿猛烈进入免费版| 成人高清在线观看视频| 久久综合老鸭窝色综合久久| 亚洲另类在线免费观看| 日韩中文字幕在线播放第二页 | 成人av免费不卡在线观看| 亚洲成高清a人片在线观看| 天天色天天舔天天射天天爽| 人妻久久久精品69系列| 漂亮 人妻被中出中文| 偷拍美女一区二区三区| 97黄网站在线观看| 国产精品一二三不卡带免费视频| 水蜜桃一区二区三区在线观看视频| 亚洲va国产va欧美精品88| 天天插天天狠天天操| 成人sm视频在线观看| 可以在线观看的av中文字幕| 好太好爽好想要免费| 91片黄在线观看喷潮| 夜夜嗨av一区二区三区中文字幕| 偷拍自拍视频图片免费| 日韩一个色综合导航| 丝袜美腿欧美另类 中文字幕| 黄网十四区丁香社区激情五月天 | 美女 午夜 在线视频| 深夜男人福利在线观看| 中文亚洲欧美日韩无线码| 五月激情婷婷久久综合网| 自拍偷拍,中文字幕| 东京干手机福利视频| 热思思国产99re| 久久久久久久久久性潮| 5528327男人天堂| 国产在线一区二区三区麻酥酥| 国产九色91在线视频| 天天日天天干天天要| 青青草人人妻人人妻| 动色av一区二区三区| 日韩欧美高清免费在线| 在线视频免费观看网| 欧美日韩精品永久免费网址| 日本一区美女福利视频| 丝袜国产专区在线观看| 成年美女黄网站18禁久久| 大陆胖女人与丈夫操b国语高清| 污污小视频91在线观看| 看一级特黄a大片日本片黑人| 中文字幕日韩无敌亚洲精品| 亚洲熟妇久久无码精品| 2021天天色天天干| 五十路熟女av天堂| 中文字幕日韩精品就在这里| 国产一级麻豆精品免费| 粉嫩欧美美人妻小视频| 亚洲av日韩精品久久久| 国产成人一区二区三区电影网站 | 高清成人av一区三区| 亚洲一区二区三区精品视频在线| 又粗又硬又猛又爽又黄的| 玩弄人妻熟妇性色av少妇| 最新的中文字幕 亚洲| 综合页自拍视频在线播放| 人妻熟女中文字幕aⅴ在线| 一区国内二区日韩三区欧美| av手机在线观播放网站| 自拍 日韩 欧美激情| 色噜噜噜噜18禁止观看| 性感美女福利视频网站| 动漫av网站18禁| 亚洲天堂精品福利成人av| 91she九色精品国产| 日韩a级黄色小视频| 超污视频在线观看污污污 | 深田咏美亚洲一区二区| 青青青青青手机视频| 精品高跟鞋丝袜一区二区| 国产精品黄大片在线播放| 91色网站免费在线观看| 黄色资源视频网站日韩| 国产久久久精品毛片| 青青擦在线视频国产在线| 最新91九色国产在线观看| 同居了嫂子在线播高清中文| 一二三中文乱码亚洲乱码one | 欧美日本在线视频一区| 班长撕开乳罩揉我胸好爽| chinese国产盗摄一区二区| 国产一区二区视频观看| 欧美xxx成人在线| 天天干天天搞天天摸| 日韩精品啪啪视频一道免费| 亚洲av自拍偷拍综合| 一色桃子人妻一区二区三区| 亚洲精品国产在线电影| 四川五十路熟女av| 日韩av有码一区二区三区4| 天天射,天天操,天天说| 女同性ⅹxx女同hd| 黄色在线观看免费观看在线| 视频在线亚洲一区二区| 日本五十路熟新垣里子| 内射久久久久综合网| 91九色porny国产在线| 一区二区熟女人妻视频| 日韩一区二区电国产精品| sw137 中文字幕 在线| 成年人啪啪视频在线观看| 亚洲av在线观看尤物| 乱亲女秽乱长久久久| 美日韩在线视频免费看| 晚上一个人看操B片| 日韩美女精品视频在线观看网站 | 一区二区三区美女毛片| 少妇系列一区二区三区视频| 国产av一区2区3区| 亚洲中文字幕人妻一区| 97成人免费在线观看网站| 91精品国产黑色丝袜| 中文字幕一区二区自拍| 91国内精品自线在拍白富美| 亚洲一区制服丝袜美腿| 天堂av在线播放免费| 国产高清在线在线视频| 午夜国产福利在线观看| 快点插进来操我逼啊视频| 青娱乐蜜桃臀av色| 亚洲狠狠婷婷综合久久app| 亚洲综合图片20p| 亚洲护士一区二区三区| 人妻少妇亚洲一区二区| 啊啊啊想要被插进去视频| 好吊操视频这里只有精品| 91九色porny蝌蚪国产成人| 久久久久久久一区二区三| 国产妇女自拍区在线观看| 国产精品污污污久久| xxx日本hd高清| 美女福利写真在线观看视频| 岛国黄色大片在线观看| 五月婷婷在线观看视频免费| 男女第一次视频在线观看| 国产熟妇一区二区三区av| 亚洲va国产va欧美精品88| 久久久久久久一区二区三 | 国产精品免费不卡av| 阿v天堂2014 一区亚洲| 黄色av网站免费在线| 人妻av无码专区久久绿巨人 | 亚洲欧美色一区二区| 婷婷久久久综合中文字幕| 欧洲欧美日韩国产在线| 天天日天天玩天天摸| 亚洲美女自偷自拍11页| 18禁美女羞羞免费网站| 欧美少妇性一区二区三区| 亚洲超碰97人人做人人爱| 在线国产精品一区二区三区| 国产精品女邻居小骚货| 97人妻总资源视频| 国产va精品免费观看| 中文字幕在线观看极品视频| 欧美日韩情色在线观看| 亚洲精品 欧美日韩| 免费十精品十国产网站| 狠狠鲁狠狠操天天晚上干干| 天天色天天爱天天爽| 国产中文字幕四区在线观看| 亚洲自拍偷拍精品网| 大香蕉大香蕉大香蕉大香蕉大香蕉| av日韩在线观看大全| av乱码一区二区三区| 亚洲 中文 自拍 无码| 人人妻人人澡欧美91精品| 国产密臀av一区二区三| 自拍 日韩 欧美激情| 18禁污污污app下载| 99热99这里精品6国产| 夫妻在线观看视频91| 欧美男人大鸡吧插女人视频| 亚洲最大黄了色网站| 国产乱子伦一二三区| 国产a级毛久久久久精品| 日韩激情文学在线视频| av中文字幕国产在线观看| 动漫黑丝美女的鸡巴| 午夜蜜桃一区二区三区| 人人人妻人人澡人人| 欧美黑人性猛交xxxxⅹooo| 亚洲精品精品国产综合| 被大鸡吧操的好舒服视频免费| 非洲黑人一级特黄片| 999热精品视频在线| 一级a看免费观看网站| 天天干夜夜操啊啊啊| 黄片大全在线观看观看| 青青伊人一精品视频| 青青青青爽手机在线| 亚洲国产成人在线一区| 国产精品精品精品999| 沙月文乃人妻侵犯中文字幕在线| 极品粉嫩小泬白浆20p主播| 蜜桃色婷婷久久久福利在线| 真实国产乱子伦一区二区| 精品一区二区三区在线观看| 国产精品久久久黄网站| 老司机福利精品免费视频一区二区 | 天堂av在线官网中文| 亚洲av无女神免非久久| 欧美日韩情色在线观看| 青青青青青操视频在线观看| 欧美精品一区二区三区xxxx| 亚洲中文字幕校园春色| 97精品成人一区二区三区| 午夜国产福利在线观看| 水蜜桃一区二区三区在线观看视频| 欧美视频中文一区二区三区| av无限看熟女人妻另类av| 热99re69精品8在线播放| 成人蜜臀午夜久久一区| 日韩一区二区三区三州| 熟女俱乐部一二三区| 55夜色66夜色国产精品站| 亚洲午夜精品小视频| 好吊操视频这里只有精品| aaa久久久久久久久| 国产日韩av一区二区在线| 一区二区三区激情在线| 91极品大一女神正在播放| 岳太深了紧紧的中文字幕| 黄色三级网站免费下载| 青青青激情在线观看视频| 91老熟女连续高潮对白| 国产妇女自拍区在线观看| 亚洲精品国偷自产在线观看蜜桃| 一色桃子人妻一区二区三区| 一本一本久久a久久精品综合不卡| 亚洲国产成人无码麻豆艾秋| 欧美日韩激情啪啪啪| 色综合久久五月色婷婷综合| 黄色成年网站午夜在线观看| 五十路丰满人妻熟妇| 亚洲福利精品视频在线免费观看| 成人乱码一区二区三区av| 欧美精品国产综合久久| 美女视频福利免费看| 无码国产精品一区二区高潮久久4| 视频久久久久久久人妻| 精品高潮呻吟久久av| 欧美偷拍自拍色图片| brazzers欧熟精品系列| 3337p日本欧洲大胆色噜噜| 不卡一区一区三区在线| 国产高清97在线观看视频| 巨乳人妻日下部加奈被邻居中出| 亚洲另类综合一区小说| 91亚洲国产成人精品性色| 日本女大学生的黄色小视频| 少妇深喉口爆吞精韩国| 中文字母永久播放1区2区3区| 大黑人性xxxxbbbb| 中国视频一区二区三区| 3344免费偷拍视频| av在线播放国产不卡| 午夜福利资源综合激情午夜福利资| 大肉大捧一进一出好爽在线视频| 三级等保密码要求条款| 精品久久久久久久久久久99| 岳太深了紧紧的中文字幕| 黄色av网站免费在线| 青青青青青青青在线播放视频| 久久久久久久久久久免费女人| 色天天天天射天天舔| 青青草成人福利电影| 欧美激情电影免费在线| 9l人妻人人爽人人爽| 成年人的在线免费视频| 国产精品入口麻豆啊啊啊| 精品区一区二区三区四区人妻| 国产亚洲成人免费在线观看| 人妻丝袜诱惑我操她视频| 久久99久久99精品影院| 国产成人精品午夜福利训2021| 中文字幕奴隷色的舞台50| 精品av国产一区二区三区四区| 天天日天天爽天天爽| 啪啪啪啪啪啪啪免费视频| 国产午夜激情福利小视频在线| 人妻少妇亚洲一区二区| 区一区二区三国产中文字幕| 国产又粗又硬又猛的毛片视频| 女警官打开双腿沦为性奴| 1区2区3区4区视频在线观看| 视频在线亚洲一区二区| 大尺度激情四射网站| 久久久精品999精品日本| 国产精品自拍偷拍a| 成人激情文学网人妻| 免费男阳茎伸入女阳道视频 | 大鸡八强奸视频在线观看| 亚洲精品乱码久久久久久密桃明| 中文字幕在线永久免费播放| 超碰公开大香蕉97| 啊啊啊视频试看人妻| huangse网站在线观看| 高清成人av一区三区| 99精品国产自在现线观看| 亚洲图片偷拍自拍区| 在线免费观看黄页视频| 黄色成年网站午夜在线观看| 毛片av在线免费看| 日韩精品二区一区久久| 亚洲欧美另类自拍偷拍色图| 91人妻精品一区二区久久| 少妇人妻100系列| 国产午夜激情福利小视频在线| 黄工厂精品视频在线观看| 在线免费观看日本伦理| 人妻熟女中文字幕aⅴ在线| 欧美专区第八页一区在线播放| 精品av国产一区二区三区四区| 热久久只有这里有精品| 欧美精品资源在线观看| 沙月文乃人妻侵犯中文字幕在线| 亚洲福利天堂久久久久久| 91九色porny蝌蚪国产成人| 岳太深了紧紧的中文字幕| 亚洲 色图 偷拍 欧美| 青青青青草手机在线视频免费看 | 97年大学生大白天操逼| 91精品国产麻豆国产| 国产a级毛久久久久精品| 国产丰满熟女成人视频| 精品少妇一二三视频在线| 大肉大捧一进一出好爽在线视频| 国产三级精品三级在线不卡| 适合午夜一个人看的视频| 女同性ⅹxx女同h偷拍| 91亚洲精品干熟女蜜桃频道| 一区二区久久成人网| 日韩欧美国产一区ab| 欧美aa一级一区三区四区| 日韩美女福利视频网| 亚洲av极品精品在线观看| 黄色成年网站午夜在线观看| 男人插女人视频网站| 中文字幕人妻一区二区视频| 成年人的在线免费视频| 自拍偷拍亚洲精品第2页| 天天日天天玩天天摸| 在线观看av2025| 啪啪啪啪啪啪啪啪av| 最新欧美一二三视频| 欧美精品资源在线观看| 熟女人妻一区二区精品视频| 成年人啪啪视频在线观看| 最新的中文字幕 亚洲| 亚洲精品国品乱码久久久久 | 欧洲日韩亚洲一区二区三区| 日韩精品中文字幕福利| 久久麻豆亚洲精品av| 午夜大尺度无码福利视频| 最新91九色国产在线观看| 午夜大尺度无码福利视频| 国产精品污污污久久| 天天操天天爽天天干| 最后99天全集在线观看| v888av在线观看视频| 999热精品视频在线| 女警官打开双腿沦为性奴| 一区二区在线观看少妇| av俺也去在线播放| 久久久久久久亚洲午夜综合福利| 熟女人妻在线观看视频| 无码国产精品一区二区高潮久久4| 国产精品系列在线观看一区二区| 欧美视频中文一区二区三区| 精品91高清在线观看| 91在线免费观看成人| 中国视频一区二区三区| av久久精品北条麻妃av观看| 大肉大捧一进一出好爽在线视频| aaa久久久久久久久| av欧美网站在线观看| 狠狠嗨日韩综合久久| 老司机免费视频网站在线看| 2017亚洲男人天堂| 538精品在线观看视频| 日本美女成人在线视频| 中英文字幕av一区| 99视频精品全部15| 亚洲中文字幕国产日韩| 风流唐伯虎电视剧在线观看| 97超碰国语国产97超碰| 国产乱子伦精品视频潮优女| 天天日天天干天天舔天天射| 四川乱子伦视频国产vip| weyvv5国产成人精品的视频| 91久久精品色伊人6882| 亚洲另类伦春色综合小| 视频一区二区三区高清在线| 91片黄在线观看喷潮| 亚洲女人的天堂av| 国产91嫩草久久成人在线视频| 啪啪啪18禁一区二区三区| 亚洲欧美精品综合图片小说| 亚洲另类图片蜜臀av| 成人激情文学网人妻| av手机在线免费观看日韩av| 免费在线观看污污视频网站| 久久久久久97三级| 色婷婷精品大在线观看| 欧美男人大鸡吧插女人视频| 啊慢点鸡巴太大了啊舒服视频| 夜夜操,天天操,狠狠操| 中文字幕亚洲久久久| 国产一线二线三线的区别在哪| 在线观看免费av网址大全| 538精品在线观看视频| 久久久久久九九99精品| 日韩激情文学在线视频| 日韩午夜福利精品试看| 日本精品一区二区三区在线视频。 | 在线观看免费视频色97| 男人插女人视频网站| 亚洲推理片免费看网站| 噜噜色噜噜噜久色超碰| 亚洲一区二区三区久久午夜 | 天天射,天天操,天天说| 欧美日韩在线精品一区二区三| 国产黄色高清资源在线免费观看| av高潮迭起在线观看| 欧美伊人久久大香线蕉综合| 在线播放国产黄色av| 午夜成午夜成年片在线观看| 国产女人被做到高潮免费视频| 国产午夜男女爽爽爽爽爽视频| 天天日天天干天天爱| 国产又大又黄免费观看| mm131美女午夜爽爽爽| 黑人3p华裔熟女普通话| 性感美女诱惑福利视频| 免费男阳茎伸入女阳道视频 | 大香蕉大香蕉在线有码 av| 91啪国自产中文字幕在线| 蜜桃视频在线欧美一区| 国产女孩喷水在线观看| 午夜激情精品福利视频| 美女福利视频导航网站| 亚洲精品中文字幕下载| 日韩精品电影亚洲一区| 国产妇女自拍区在线观看| 午夜精品一区二区三区更新| 亚洲成人线上免费视频观看| 成人精品视频99第一页| 美日韩在线视频免费看| 欧美精品资源在线观看| 高潮视频在线快速观看国家快速| 超级福利视频在线观看| 久久精品亚洲国产av香蕉| 99精品免费观看视频| av天堂加勒比在线| 91av中文视频在线| 1区2区3区4区视频在线观看| 国产免费高清视频视频|