Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产yw193.㎝m在线观看,亚洲精品成人在线,亚洲黄色免费视频

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          小白必看!Django 模板語言基礎來啦

          者 | 單雨

          責編 | 胡巍巍

          出品 | CSDN(ID:CSDNnews)

          前言

          為了實現模板封裝和復用,提高HTML界面調試便捷性以及前后端解耦等目標,Django定義了自己的網絡模板語言。

          當前介紹模板語言的官方文檔已經非常完備,幾乎涵蓋了開發中需要用到的知識點和需要注意的問題,但同時官方文檔也存在一些問題:

          • 翻譯不夠完善,帶來閱讀的困難;

          • 一些知識點的介紹過于簡短,存在大量的頁內鏈接,閱讀時需要跳轉到不同的頁面,閱讀不連貫。

          本文基于官方文檔系統介紹了Django模板語言的基礎知識點,方便快速了解Django模板語言。

          模板系統設計哲學

          Django的模板系統不是簡單的把Python嵌入到HTML中。

          它的設計宗旨是:模板系統旨在展示內容, 而不是程序邏輯,因此不在HTML頁面中嵌入Python。

          簡單的說,模板只負責渲染數據,大多數邏輯應該交給視圖(view)進行處理。

          模板簡介

          模板是一個簡單的文本文件。它可以生成任何基于文本的格式(如 HTML,XML,CSV等)。除了基本的HTML標簽外,模板還包含兩種額外的元素——變量和標簽。

          模板中包含的變量可以被替換為變量的值,標簽則被替換為相應的模板控制邏輯。示例:

          django

          {% extends "base_generic.html" %}

          {% block title %}{{ section.title }}{% endblock %}

          {% block content %}

          <h1>{{ section.title }}</h1>

          {% for story in story_list %}

          <h2>

          <a href="{{ story.get_absolute_url }}">

          {{ story.headline|upper }}

          </a>

          </h2>

          <p>{{ story.tease|truncatewords:"100" }}</p>

          {% endfor %}

          {% endblock %}

          `{{ section.title }}`在模板渲染時將會被變量的值替換,for標簽可以實現模板的循環渲染。

          基礎語法

          變量

          變量實現從模板上下文字典(返回HTTP響應時傳遞過來的字典)中輸出一個值,這是一個類似于dict的對象,包含鍵值對。當模板引擎遇到一個變量時,它會計算該變量,并用結果替換它。

          變量名由字母、數字字符和下劃線("_")組成,但不能以下劃線開頭。點(".")也出現在變量中,代表屬性調用,變量名中不能有空格或標點符號。

          示例:

          django

          My first name is {{ first_name }}. My last name is {{ last_name }}.

          當傳入一個上下文字典`{'first_name': 'John', 'last_name': 'Doe'}`時,將會渲染得到:

          django

          My first name is John. My last name is Doe.

          模板中的變量被字典中的值替換了。

          變量還可以使用點表示法實現字典查找、屬性查找和列表索引查找等操作:

          django

          {{ my_dict.key }}

          {{ my_object.attribute }}

          {{ my_list.0 }}

          點表示法底層原理

          當模板系統遇到一個點,它會按順序嘗試下面的動作:

          1. 字典查詢

          2. 屬性或方法查找

          3. 數字索引查詢

          如果結果值是可調用的,則調用該值時將不帶參數,調用的結果成為新的模板值。

          當進行能覆蓋字典查找的操作時,這種查找順序可能會造成一些意想不到的行為。例如:如果試圖循環一個collection .defaultdict字典對象:

          django

          {% for k, v in defaultdict.items %}

          {其他操作}

          {% endfor %}

          因為字典查找是首先發生的,所以這個行為會先提供一個默認值,而不是使用預期的.items方法。在這種情況下,應該首先考慮使用字典查找,而不是使用字典的屬性調用。

          注意

          屬性通常被解釋為一個文本字符串,防止和同名的變量沖突。例如{{foo.bar}}中的屬性“bar”將被解釋為一個文本字符串,如果模板上下文中存在變量“bar”,則不會使用該變量的值。

          以下劃線開頭的變量屬性可能不能訪問,因為它們通常被認為是私有的。

          如果引用不存在的變量,模板系統將插入string_if_invalid選項的值,該選項默認設置為“”(空字符串)。

          標簽

          標簽在模板渲染過程中提供任意邏輯。標簽可以輸出內容,作為控制結構,例如“if”語句或“for”循環,從數據庫獲取內容,甚至允許訪問其他模板標簽。

          (1)標簽聲明

          標簽的一般形式為:

          django

          {% tag %}

          示例:

          django

          {% csrf_token %}

          (2)傳入參數

          django

          {% cycle 'odd' 'even' %}

          (3)成對使用的標簽

          有些標簽需要開始和結束標簽:

          django

          {% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}

          (4)常用標簽

          for:循環數組中的每個元素. 比如, 顯示列表 `athlete_list` 中每個元素的 `name` 屬性。

          django

          <ul>

          {% for athlete in athlete_list %}

          <li>{{ athlete.name }}</li>

          {% endfor %}

          </ul>

          if 、elif和else:在上面,如果athlete_list不為空,則{{athlete_list|length}}變量將顯示運動員的數量。

          否則,如果athlete_in_locker_room_list不為空,則會顯示“Athletes should be out…”消息。如果兩個列表都為空,則顯示“No athletes”。

          也可以在if標簽里使用過濾器和各種操作符:

          django

          {% if athlete_list|length > 1 %}

          Team: {% for athlete in athlete_list %} ... {% endfor %}

          {% else %}

          Athlete: {{ athlete_list.0.name }}

          {% endif %}

          注意

          雖然上面的示例可以工作,但是要注意,大多數模板過濾器都返回字符串,因此使用過濾器進行數學比較通常不會正常工作,而長度是個例外。

          (5)更多

          Django有很多內置標簽,更多關于內置標簽的信息請參考官方文檔:

          https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/ref-templates-builtins-tags

          如果需要編寫自定義標簽,請參考官方文檔

          https://docs.djangoproject.com/zh-hans/2.2/howto/custom-template-tags/howto-writing-custom-template-tags

          如果需要對使用的標簽和自定義的標簽做一份說明文檔,可以使用Django提供的文檔工具,詳情請參考:

          https://docs.djangoproject.com/zh-hans/2.2/ref/contrib/admin/admindocs/

          過濾器

          簡介

          過濾器可以對變量做一些操作,例如給變量賦值,改變變量的值等。

          修改變量顯示

          過濾器可以修改變量的顯示。例如:

          django

          {{ name|lower }}

          通過過濾器lower變量{{ name }}變為了小寫字符,通過管道符(|)間隔變量和過濾器來使用過濾器。

          鏈式調用過濾器

          一個過濾器的輸出可以作為下一個過濾器的輸入。

          {{ text|escape|linebreaks }}是一種常用的轉換方式, 在這之后換行符被替換為了 <p> 標簽。

          轉換變量和標簽參數

          過濾器轉換變量和標簽參數的值。示例:

          django

          {{ django|title }}

          傳入`{'django': 'the web framework for perfecalist With deadline '}`上下文字典時,該模板呈現為:

          django

          The Web Framework For Perfectionists With Deadlines

          傳入參數給過濾器

          示例1:

          django

          {{ my_date|date:"Y-m-d" }}

          my_date將會被替換為當前日期。

          示例2:

          django

          {{ bio|truncatewords:30 }}

          將會會顯示 `bio` 變量的前30個字符

          注意

          過濾器參數中如果包含空格和標點符號,必須使用引號“”括起來,例如,要用逗號和空格連接列表,可以使用{{list|join:", "}}。

          Django提供了大約60個內置模板過濾器,請參考官方文檔:

          https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/ref-templates-builtins-filters

          下面列舉一些常用的過濾器:

          default

          如果變量為false或空,則使用給定的默認值。否則,使用變量的值。例如:

          django

          {{ value|default:"nothing" }}

          如果 `value` 沒有提供或者為空,那么將它顯示為 "`nothing`" 。

          length

          返回值的長度。這對字符串和列表都適用。例如:

          django

          {{ value|length }}

          如果 `value` 為 `['a', 'b', 'c', 'd']`, 那么他將被顯示為 `4`。

          filesizeformat

          將值格式化為“人類可讀的”文件大小(即“13kb”、“4.1 MB”、“102字節”等)。例如:

          django

          {{ value|filesizeformat }}

          如果值為123456789,則輸出為117.7 MB。

          如果需要自定義過濾器,請參考請官方文檔:

          https://docs.djangoproject.com/zh-hans/2.2/howto/custom-template-tags/

          注釋

          示例:

          單行注釋

          django

          { this won't be rendered }

          多行注釋:{% comment %} 和{% endcomment %}

          django

          <p>Rendered text with {{ pub_date|date:"c" }}</p>

          {% comment "Optional note" %}

          <p>Commented out text with {{ create_date|date:"c" }}</p>

          {% endcomment %}

          注意:Comment標簽不能嵌套使用。

          作者簡介:單雨,90后工科男,偽文藝青年。目前就讀于北京理工大學宇航系,喜歡研究AI,網絡爬蟲,微信小程序以及機器人,癡迷于Coding,睡前必擼碼。

          【END】

          jango 是 Python API 開發中最流行的框架之一,在這個教程中,我們來學習如何使用它。-- Rachel Waston(作者)


          Django 所有 Web 框架中最全面的,也是最受歡迎的一個。自 2005 年以來,其流行度大幅上升。

          Django 是由 Django 軟件基金會維護,并且獲得了社區的大力支持,在全球擁有超過 11,600 名成員。在 Stack Overflow 上,約有 191,000 個帶 Django 標簽的問題。Spotify、YouTube 和 Instagram 等都使用 Django 來構建應用程序和數據管理。

          本文演示了一個簡單的 API,通過它可以使用 HTTP 協議的 GET 方法來從服務器獲取數據。

          構建一個項目

          首先,為你的 Django 應用程序創建一個目錄結構,你可以在系統的任何位置創建:

          $ mkdir myproject
          $ cd myproject

          然后,在項目目錄中創建一個虛擬環境來隔離本地包依賴關系:

          $ python3 -m venv env
          $ source env/bin/activate

          在 Windows 上,使用命令 env\Scripts\activate 來激活虛擬環境。

          安裝 Django 和 Django REST framework

          然后,安裝 Django 和 Django REST 模塊:

          $ pip3 install django
          $ pip3 install djangorestframework

          實例化一個新的 Django 項目

          現在你的應用程序已經有了一個工作環境,你必須實例化一個新的 Django 項目。與 Flask 這樣微框架不同的是,Django 有專門的命令來創建(注意第一條命令后的 . 字符)。

          $ django-admin startproject tutorial .
          $ cd tutorial
          $ django-admin startapp quickstart

          Django 使用數據庫來管理后端,所以你應該在開始開發之前同步數據庫,數據庫可以通過 manage.py 腳本管理,它是在你運行 django-admin 命令時創建的。因為你現在在 tutorial 目錄,所以使用 ../ 符號來運行腳本,它位于上一層目錄:

          $ python3 ../manage.py makemigrations
          No changes detected
          $ python4 ../manage.py migrate
          Operations to perform:
          ??Apply all migrations: admin, auth, contenttypes, sessions
          Running migrations:
          ??Applying contenttypes.0001_initial... OK
          ??Applying auth.0001_initial... OK
          ??Applying admin.0001_initial... OK
          ??Applying admin.0002_logentry_remove_auto_add... OK
          ??Applying admin.0003_logentry_add_action_flag_choices... OK
          ??Applying contenttypes.0002_remove_content_type_name... OK
          ??Applying auth.0002_alter_permission_name_max_length... OK
          ??Applying auth.0003_alter_user_email_max_length... OK
          ??Applying auth.0004_alter_user_username_opts... OK
          ??Applying auth.0005_alter_user_last_login_null... OK
          ??Applying auth.0006_require_contenttypes_0002... OK
          ??Applying auth.0007_alter_validators_add_error_messages... OK
          ??Applying auth.0008_alter_user_username_max_length... OK
          ??Applying auth.0009_alter_user_last_name_max_length... OK
          ??Applying auth.0010_alter_group_name_max_length... OK
          ??Applying auth.0011_update_proxy_permissions... OK
          ??Applying sessions.0001_initial... OK

          在 Django 中創建用戶

          創建一個名為 admin,示例密碼為 password123 的初始用戶:

          $ python3 ../manage.py createsuperuser \
          ??--email admin@example.com \
          ??--username admin

          在提示時創建密碼。

          在 Django 中實現序列化和視圖

          為了使 Django 能夠將信息傳遞給 HTTP GET 請求,必須將信息對象轉化為有效的響應數據。Django 為此實現了“序列化類” serializers。

          在你的項目中,創建一個名為 quickstart/serializers.py 的新模塊,使用它來定義一些序列化器,模塊將用于數據展示:

          from django.contrib.auth.models import User, Group
          from rest_framework import serializers
          
          class UserSerializer(serializers.HyperlinkedModelSerializer):
          ????class Meta:
          ????????model = User
          ????????fields = ['url', 'username', 'email', 'groups']
          
          class GroupSerializer(serializers.HyperlinkedModelSerializer):
          ????class Meta:
          ????????model = Group
          ????????fields = ['url', 'name']

          Django 中的 視圖 是一個接受 Web 請求并返回 Web 響應的函數。響應可以是 HTML、HTTP 重定向、HTTP 錯誤、JSON 或 XML 文檔、圖像或 TAR 文件,或者可以是從 Internet 獲得的任何其他內容。要創建視圖,打開 quickstart/views.py 并輸入以下代碼。該文件已經存在,并且其中包含一些示例文本,保留這些文本并將以下代碼添加到文件中:

          from django.contrib.auth.models import User, Group
          from rest_framework import viewsets
          from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
          
          class UserViewSet(viewsets.ModelViewSet):
          ????"""
          ????API 允許查看或編輯用戶
          ????"""
          ????queryset = User.objects.all().order_by('-date_joined')
          ????serializer_class = UserSerializer
          
          class GroupViewSet(viewsets.ModelViewSet):
          ????"""
          ????API 允許查看或編輯組
          ????"""
          ????queryset = Group.objects.all()
          ????serializer_class = GroupSerializer

          使用 Django 生成 URL

          現在,你可以生成 URL 以便人們可以訪問你剛起步的 API。在文本編輯器中打開 urls.py 并將默認示例代碼替換為以下代碼:

          from django.urls import include, path
          from rest_framework import routers
          from tutorial.quickstart import views
          
          router = routers.DefaultRouter()
          router.register(r'users', views.UserViewSet)
          router.register(r'groups', views.GroupViewSet)
          
          # 使用自動路由 URL
          # 還有登錄 URL
          urlpatterns = [
          ????path('', include(router.urls)),
          ????path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
          ]

          調整你的 Django 項目設置

          這個示例項目的設置模塊存儲在 tutorial/settings.py 中,因此在文本編輯器中將其打開,然后在 INSTALLED_APPS 列表的末尾添加 rest_framework:

          INSTALLED_APPS = [
          ????...
          ????'rest_framework',
          ]

          測試 Django API

          現在,你可以測試構建的 API。首先,從命令行啟動內置服務器:

          $ python3 manage.py runserver

          你可以通過使用 curl 導航至 URL http://localhost:8000/users 來訪問 API:

          $ curl --get http://localhost:8000/users/?format=json
          [{"url":"http://localhost:8000/users/1/?format=json","username":"admin","email":"admin@example.com","groups":[]}]

          使用 Firefox 或你選擇的 開源瀏覽器 :

          一個簡單的 Django API


          有關使用 Django 和 Python 的 RESTful API 的更多深入知識,參考出色的 Django 文檔 。

          為什么要使用 Djago?

          Django 的主要優點:

          1. Django 社區的規模正在不斷擴大,因此即使你做一個復雜項目,也會有大量的指導資源。
          2. 默認包含模板、路由、表單、身份驗證和管理工具等功能,你不必尋找外部工具,也不必擔心第三方工具會引入兼容性問題。
          3. 用戶、循環和條件的簡單結構使你可以專注于編寫代碼。
          4. 這是一個成熟且經過優化的框架,它非常快速且可靠。

          Django 的主要缺點:

          1. Django 很復雜!從開發人員視角的角度來看,它可能比簡單的框架更難學。
          2. Django 有一個很大的生態系統。一旦你熟悉它,這會很棒,但是當你深入學習時,它可能會令人感到無所適從。

          對你的應用程序或 API 來說,Django 是絕佳選擇。下載并熟悉它,開始開發一個迷人的項目!


          via: https://opensource.com/article/19/11/python-web-api-django

          作者: Rachel Waston 選題: lujun9972 譯者: MjSeven 校對: wxy

          本文由 LCTT 原創編譯, Linux中國 榮譽推出

          點擊“了解更多”可訪問文內鏈接

          者:HelloGitHub-追夢人物

          我們已經成功地開發了一個功能比較完備的個人博客,是時候來總結一下我們的工作了。博客系列完整的源代碼地址:

          https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial

          • 在教程的前兩篇,我們介紹了如何搭建 django 開發環境,如何創建 django 項目以及 django 應用,這是我們進行 django 項目開發的基礎。
          • 第 3、4 篇:講了 django ORM 的基礎操作。ORM 是 django 核心中的核心,不僅 django 自帶的應用底層全都依賴于 ORM,大部分使用 django 構建的應用基本也離不開 django ORM 的操作,所以能否熟練掌握 django 的 ORM API 決定了能否寫出高質量、高性能的 django 應用。
          • 第 5、6 篇:講解了 django 基本的視圖函數,視圖函數的作用是接收一個 HTTP 請求,根據這個請求的意圖返回相應的 HTTP 響應。在這個請求處理的過程中,通常都會涉及到使用 ORM 進行數據庫的增刪改查操作。
          • 第 7 篇:介紹了 django 的殺手锏應用,開箱即用的 Admin 管理臺。我們可以通過這個管理臺直接對數據庫中的數據進行增刪改查操作。
          • 第 9、10 篇:介紹了 Markdown 的使用,對于博客、技術論壇之類的應用,使用 Markdown 來撰寫內容是一個常見的需求。
          • 第 12、13 篇:介紹了如何自定義模板標簽并使用它們。模板標簽用于 django 的模板系統中,用來生成 HTML 頁面。django 的模板系統自帶了大量的模板標簽。但如果自帶的標簽不滿足需求,我們就可以拓展 django 模板系統的 API 來自定義模板標簽。
          • 第 14 篇:我們利用上述學習到的知識開發了一個獨立的 django 評論應用。這里面我們還初步接觸了表單的使用。django 的表單是對 HTML 表單的封裝,它在后臺完成數據校驗、清理等功能,并對非法的表單輸入返回給客戶端友好的錯誤提示。
          • 第 16、17、18、19:向大家介紹了運維方面的知識,包括如何在服務器上部署 django 應用,如何編寫自動化腳本來全自動部署,如何給網站開啟 HTTPS 以提高安全性。特別是使用 Docker 進行部署后,我們把整個 django 部署的過程縮減到只需線上執行幾條命令就能完成,Docker 幫助我們極大簡化了部署流程。
          • 第 21 篇:我們介紹了基于類的視圖和通用類視圖。之前說了,django 的視圖本質上是一個函數,它接收一個 HTTP 請求,返回一個 HTTP 響應。類視圖雖然是一個類,但這只是針對開發者而言,django 通過 Python 魔法將類轉化為一個可被調用的函數。使用類的好處是,它允許被繼承,因此在某些情況下可以提高代碼的復用性。
          • 第 22 篇:演示了如何在 Python 腳本里面獨立地使用 django 的 ORM。一般要使用 django 的 ORM 必須啟動整個 django 項目,而如果要在獨立的腳本中使用的話,就必須進行一些額外的設置。
          • 第 23 篇:我們介紹了如何使用 django 第三方庫,django 的強大不僅在于它自身功能的完備程度,更在于其繁榮的社區。大量開發者在開源平臺發布了很多優質的 django 拓展應用,涵蓋了 web 開發的方方面面。這里我們只介紹了一個分頁應用,更多應用大家可以在 GitHub 通過搜索關鍵詞 django 進行探索。
          • 第 27、28 篇:我們介紹了搜索功能的實現。一開始使用的是比較簡單的搜索方式,利用之前所學的 django 知識就能完成。不過為了更好的搜索體驗,我們進一步引入了 elasticsearch 這個專業的搜索服務來提供搜索功能,同時使用了一個 django 第三方庫 django-haystack 來將 elasticsearch 和 django 無縫對接。同時可以看到,有了 Docker 容器技術,引入一個外部服務變得非常簡單。
          • 第 29、30、31 篇:我們對博客補充了完善的單元測試,測試過程中我們發現了一些隱藏的 bug 并進行了修復,由此測試的重要性可見一斑。此外,為了衡量測試的質量,我們使用 coverage.py 對代碼測試覆蓋率進行了統計,越高的測試覆蓋率說明測試越充分,程序出現 bug 的幾率也就越小。

          現在,我們已經有了一個功能比較完備的個人博客應用。而且,在測試的保障護航下,我們可以在不破壞現用功能的情況下,輕松加入新的功能。

          教程進行到這里,HelloDjango 博客教程就要準備告一段落了,大部分 web 開發中的需求,你都可以通過教程中講到的知識點,結合 django 的官方文檔來實現。

          不過,真的要結束了嗎?我的回答是沒有也不想結束!

          Django 中還有很多值得介紹的地方,就拿博客來說,我們還可以做這些很酷的功能:

          • 支持用戶登錄,甚至使用 GitHub、新浪微博等第三方應用登錄
          • 支持多級評論
          • 國際化
          • 使用緩存進行性能優化
          • 支持郵件訂閱,有新的博客就發送郵件提醒訂閱者

          等等,這些對于其他 Web 系統來說,基本也都是必不可少的。

          所以,HelloDjango 博客項目會繼續以這樣的形式繼續下去:

          圍繞著某一個功能進行開發,功能開發完成之后附帶輸出一篇詳細介紹功能實現原理和過程的教程。我希望 HelloDjango 博客項目不僅僅是一個教學演示項目,也不僅僅是一個高質量、功能完備的 django 第三方博客應用,而是兩者都是!

          號外

          此外,雖然 HelloDjango 博客項目教程定期更新已經結束,但接下來我會開始以定期更新的方式向大家介紹如何 django-restframework + Vue 或者 React 這種更加現代化的前后端分離開發方式,大量公司都采用這種開發方式,如果你以找工作為目的而學習 django 的話,怎么能不學習這種開發模式呢?

          HelloDjango-blogs 的教程暫時告一段落,全新的 HelloDjango-django-restframework 系列教程就要要重新揚帆起航了,大家敬請期待!

          『講解開源項目系列』——讓對開源項目感興趣的人不再畏懼、讓開源項目的發起者不再孤單。跟著我們的文章,你會發現編程的樂趣、使用和發現參與開源項目如此簡單。歡迎聯系我、加入我們,讓更多人愛上開源、貢獻開源~


          主站蜘蛛池模板: 综合激情区视频一区视频二区| 老熟女五十路乱子交尾中出一区| 免费精品一区二区三区在线观看| 无码人妻精品一区二| 日韩亚洲AV无码一区二区不卡| 麻豆视传媒一区二区三区| 97精品国产一区二区三区| 国产在线一区二区在线视频| 日本一区二区三区在线观看视频| 精品福利视频一区二区三区| 免费萌白酱国产一区二区三区 | 国产成人av一区二区三区在线观看| 国产成人精品无码一区二区三区| 国产高清视频一区二区| 久久精品免费一区二区| 日本一区二区不卡视频 | 暖暖免费高清日本一区二区三区| 久久国产精品亚洲一区二区| av在线亚洲欧洲日产一区二区| 影院成人区精品一区二区婷婷丽春院影视| 国产一区三区三区| 色综合视频一区二区三区| 国产精品第一区揄拍无码| 中文精品一区二区三区四区| 中文字幕日韩一区二区三区不卡| 国产精品日本一区二区在线播放 | 综合人妻久久一区二区精品| 国产一区二区三区在线免费| 日本精品无码一区二区三区久久久| 亚洲视频在线一区| 久久人妻内射无码一区三区 | 日本精品无码一区二区三区久久久| 精品永久久福利一区二区| 一区二区免费视频| 无码日韩精品一区二区免费暖暖 | 黑巨人与欧美精品一区| 亚洲一区二区三区乱码在线欧洲| 日韩精品无码一区二区三区| 麻豆AV一区二区三区| 中文字幕一区在线观看视频| 中文字幕乱码一区久久麻豆樱花|