成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > django上傳文件的三種方式

django上傳文件的三種方式

熱門標(biāo)簽:悟空智電銷機(jī)器人6 外呼不封號系統(tǒng) 電信營業(yè)廳400電話申請 幫人做地圖標(biāo)注收費(fèi)算詐騙嗎 蘇州電銷機(jī)器人十大排行榜 溫州旅游地圖標(biāo)注 江蘇房產(chǎn)電銷機(jī)器人廠家 荊州云電銷機(jī)器人供應(yīng)商 遼寧400電話辦理多少錢

Django文件上傳需要考慮的重要事項(xiàng)

文件或圖片一般通過表單進(jìn)行。用戶在前端點(diǎn)擊文件上傳,然后以POST方式將數(shù)據(jù)和文件提交到服務(wù)器。服務(wù)器在接收到POST請求后需要將其存儲在服務(wù)器上的某個地方。Django默認(rèn)的存儲地址是相對于根目錄的/media/文件夾,存儲的默認(rèn)文件名就是文件本來的名字。上傳的文件如果不大于2.5MB,會先存入服務(wù)器內(nèi)存中,然后再寫入磁盤。如果上傳的文件很大,Django會把文件先存入臨時文件,再寫入磁盤。

Django默認(rèn)處理方式會出現(xiàn)一個問題,所有文件都存儲在一個文件夾里。不同用戶上傳的有相同名字的文件可能會相互覆蓋。另外用戶還可能上傳一些不安全的文件如js和exe文件,我們必需對允許上傳文件的類型進(jìn)行限制。因此我們在利用Django處理文件上傳時必需考慮如下3個因素:

  • 設(shè)置存儲上傳文件的文件夾地址
  • 對上傳文件進(jìn)行重命名
  • 對可接受的文件類型進(jìn)行限制(表單驗(yàn)證)

注意:以上事項(xiàng)對于上傳圖片是同樣適用的。

Django文件上傳的3種常見方式

Django文件上傳一般有3種方式(如下所示)。我們會針對3種方式分別提供代碼示范。

  • 使用一般的自定義表單上傳,在視圖中手動編寫代碼處理上傳的文件
  • 使用由模型創(chuàng)建的表單(ModelForm)上傳,使用form.save()方法自動存儲
  • 使用Ajax實(shí)現(xiàn)文件異步上傳,上傳頁面無需刷新即可顯示新上傳的文件

Ajax文件上傳部分見Django與Ajax交互篇。

項(xiàng)目創(chuàng)建與設(shè)置

我們先使用django-admin startproject命令創(chuàng)建一個叫file_project的項(xiàng)目,然后cd進(jìn)入file_project, 使用python manage.py startapp創(chuàng)建一個叫file_upload的app。

我們首先需要將file_upload這個app加入到我們項(xiàng)目里,然后設(shè)置/media/和/STATIC_URL/文件夾。我們上傳的文件都會放在/media/文件夾里。我們還需要使用css和js這些靜態(tài)文件,所以需要設(shè)置STATIC_URL。

#file_project/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'file_upload',# 新增
]

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"), ]

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

#file_project/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('file/', include("file_upload.urls")),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

創(chuàng)建模型

使用Django上傳文件創(chuàng)建模型不是必需,然而如果我們需要對上傳文件進(jìn)行系統(tǒng)化管理,模型還是很重要的。我們的File模型包括file和upload_method兩個字段。我們通過upload_to選項(xiàng)指定了文件上傳后存儲的地址,并對上傳的文件名進(jìn)行了重命名。

#file_upload/models.py
from django.db import models
import os
import uuid

# Create your models here.
# Define user directory path
def user_directory_path(instance, filename):
    ext = filename.split('.')[-1]
    filename = '{}.{}'.format(uuid.uuid4().hex[:10], ext)
    return os.path.join("files", filename)

class File(models.Model):
    file = models.FileField(upload_to=user_directory_path, null=True)
    upload_method = models.CharField(max_length=20, verbose_name="Upload Method")

注意:如果你不使用ModelForm,你還需要手動編寫代碼存儲上傳文件。

URLConf配置

本項(xiàng)目一共包括3個urls, 分別對應(yīng)普通表單上傳,ModelForm上傳和顯示文件清單。

#file_upload/urls.py
from django.urls import re_path, path
from . import views

# namespace
app_name = "file_upload"

urlpatterns = [
    # Upload File Without Using Model Form
    re_path(r'^upload1/$', views.file_upload, name='file_upload'),

    # Upload Files Using Model Form
    re_path(r'^upload2/$', views.model_form_upload, name='model_form_upload'),

    # View File List
    path('file/', views.file_list, name='file_list'),

]

使用一般表單上傳文件

我們先定義一個一般表單FileUploadForm,并通過clean方法對用戶上傳的文件進(jìn)行驗(yàn)證,如果上傳的文件名不以jpg, pdf或xlsx結(jié)尾,將顯示表單驗(yàn)證錯誤信息。關(guān)于表單的自定義和驗(yàn)證更多內(nèi)容見Django基礎(chǔ): 表單forms的設(shè)計與使用。

#file_upload/forms.py

from django import forms
from .models import File

# Regular form
class FileUploadForm(forms.Form):
    file = forms.FileField(widget=forms.ClearableFileInput(attrs={'class': 'form-control'}))
    upload_method = forms.CharField(label="Upload Method", max_length=20,
                                   widget=forms.TextInput(attrs={'class': 'form-control'}))
    def clean_file(self):
        file = self.cleaned_data['file']
        ext = file.name.split('.')[-1].lower()
        if ext not in ["jpg", "pdf", "xlsx"]:
            raise forms.ValidationError("Only jpg, pdf and xlsx files are allowed.")
        # return cleaned data is very important.
        return file

注意: 使用clean方法對表單字段進(jìn)行驗(yàn)證時,別忘了return驗(yàn)證過的數(shù)據(jù),即cleaned_data。只有返回了cleaned_data, 視圖中才可以使用form.cleaned_data.get(‘xxx')獲取驗(yàn)證過的數(shù)據(jù)。

對應(yīng)一般文件上傳的視圖file_upload方法如下所示。當(dāng)用戶的請求方法為POST時,我們通過form.cleaned_data.get('file')獲取通過驗(yàn)證的文件,并調(diào)用自定義的handle_uploaded_file方法來對文件進(jìn)行重命名,寫入文件。如果用戶的請求方法不為POST,則渲染一個空的FileUploadForm在upload_form.html里。我們還定義了一個file_list方法來顯示文件清單。

#file_upload/views.py

from django.shortcuts import render, redirect
from .models import File
from .forms import FileUploadForm, FileUploadModelForm
import os
import uuid
from django.http import JsonResponse
from django.template.defaultfilters import filesizeformat

# Create your views here.


# Show file list
def file_list(request):
    files = File.objects.all().order_by("-id")
    return render(request, 'file_upload/file_list.html', {'files': files})

# Regular file upload without using ModelForm
def file_upload(request):
    if request.method == "POST":
        form = FileUploadForm(request.POST, request.FILES)
        if form.is_valid():
            # get cleaned data
            upload_method = form.cleaned_data.get("upload_method")
            raw_file = form.cleaned_data.get("file")
            new_file = File()
            new_file.file = handle_uploaded_file(raw_file)
            new_file.upload_method = upload_method
            new_file.save()
            return redirect("/file/")
    else:
        form = FileUploadForm()

    return render(request, 'file_upload/upload_form.html', 
                  {'form': form, 'heading': 'Upload files with Regular Form'}
                 )

def handle_uploaded_file(file):
    ext = file.name.split('.')[-1]
    file_name = '{}.{}'.format(uuid.uuid4().hex[:10], ext)

    # file path relative to 'media' folder
    file_path = os.path.join('files', file_name)
    absolute_file_path = os.path.join('media', 'files', file_name)

    directory = os.path.dirname(absolute_file_path)
    if not os.path.exists(directory):
        os.makedirs(directory)

    with open(absolute_file_path, 'wb+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

    return file_path

注意:

  • handle_uploaded_file方法里文件寫入地址必需是包含/media/的絕對路徑,如果/media/files/xxxx.jpg,而該方法返回的地址是相對于/media/文件夾的地址,如/files/xxx.jpg。存在數(shù)據(jù)中字段的是相對地址,而不是絕對地址。
  • 構(gòu)建文件寫入絕對路徑時請用os.path.join方法,因?yàn)椴煌到y(tǒng)文件夾分隔符不一樣。寫入文件前一個良好的習(xí)慣是使用os.path.exists檢查目標(biāo)文件夾是否存在,如果不存在先創(chuàng)建文件夾,再寫入。

上傳表單模板upload_form.html代碼如下:

#file_upload/templates/upload_form.html
{% extends "file_upload/base.html" %}
{% block content %}
{% if heading %}
h3>{{ heading }}/h3>
{% endif %}

form action="" method="post" enctype="multipart/form-data" >
  {% csrf_token %}
  {{ form.as_p }}
 button class="btn btn-info form-control " type="submit" value="submit">Upload/button>
/form>
{% endblock %} 

顯示文件清單模板file_list.html代碼如下所示:

# file_upload/templates/file_list.html
{% extends "file_upload/base.html" %}

{% block content %}
h3>File List/h3>
p> a href="/file/upload1/" rel="external nofollow" >RegularFormUpload/a> | a href="/file/upload2/" rel="external nofollow" >ModelFormUpload/a>
    | a href="/file/upload3/" rel="external nofollow" >AjaxUpload/a>/p>
{% if files %}
table class="table table-striped">
    tbody>
    tr>
        td>Filename  URL/td>
        td>Filesize/td>
        td>Upload Method/td>
    /tr>
    {% for file in files %}
    tr>
        td>a href="{{ file.file.url }}" rel="external nofollow" >{{ file.file.url }}/a>/td>
        td>{{ file.file.size | filesizeformat }}/td>
        td>{{ file.upload_method }}/td>
    /tr>
    {% endfor %}
    /tbody>
/table>

{% else %}

p>No files uploaded yet. Please click a href="{% url 'file_upload:file_upload' %}" rel="external nofollow" >here/a>
    to upload files./p>
{% endif %}
{% endblock %}

注意: 

  • 對于上傳的文件我們可以調(diào)用file.url, file.name和file.size來查看上傳文件的鏈接,地址和大小。
  • 上傳文件的大小默認(rèn)是以B顯示的,數(shù)字非常大。使用Django模板過濾器filesizeformat可以將文件大小顯示為人們可讀的方式,如MB,KB。

使用ModelForm上傳文件

使用ModelForm上傳是小編我推薦的上傳方式,前提是你已經(jīng)在模型中通過upload_to選項(xiàng)自定義了用戶上傳文件存儲地址,并對文件進(jìn)行了重命名。我們首先要自定義自己的FileUploadModelForm,由File模型重建的。代碼如下所示:

#file_upload/forms.py
from django import forms
from .models import File

# Model form
class FileUploadModelForm(forms.ModelForm):
    class Meta:
        model = File
        fields = ('file', 'upload_method',)
        widgets = {
            'upload_method': forms.TextInput(attrs={'class': 'form-control'}),
            'file': forms.ClearableFileInput(attrs={'class': 'form-control'}),
        }

    def clean_file(self):
        file = self.cleaned_data['file']
        ext = file.name.split('.')[-1].lower()
        if ext not in ["jpg", "pdf", "xlsx"]:
            raise forms.ValidationError("Only jpg, pdf and xlsx files are allowed.")
        # return cleaned data is very important.
        return file

使用ModelForm處理文件上傳的視圖model_form_upload方法非常簡單,只需調(diào)用form.save()即可,無需再手動編寫代碼寫入文件。

#file_upload/views.py

from django.shortcuts import render, redirect
from .models import File
from .forms import FileUploadForm, FileUploadModelForm
import os
import uuid
from django.http import JsonResponse
from django.template.defaultfilters import filesizeformat

# Create your views here.
# Upload File with ModelForm

def model_form_upload(request):
    if request.method == "POST":
        form = FileUploadModelForm(request.POST, request.FILES)
        if form.is_valid():
            form.save() # 一句話足以
            return redirect("/file/")
    else:
        form = FileUploadModelForm()

    return render(request, 'file_upload/upload_form.html', 
                  {'form': form,'heading': 'Upload files with ModelForm'}
                 )

模板跟前面一樣,這里就不展示了。

GitHub源碼地址

https://github.com/shiyunbo/django-file-upload-download

小結(jié)

本文提供并解讀了利用Django上傳文件的3種主要方式(一般表單上傳,ModelForm上傳和Ajax上傳)及示范代碼。

以上就是django上傳文件的三種方式的詳細(xì)內(nèi)容,更多關(guān)于django上傳文件的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Django 如何實(shí)現(xiàn)文件上傳下載
  • Django和Ueditor自定義存儲上傳文件的文件名
  • 詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式
  • 基于django和dropzone.js實(shí)現(xiàn)上傳文件
  • python中Django文件上傳方法詳解
  • Django后端分離 使用element-ui文件上傳方式
  • Django Admin 上傳文件到七牛云的示例代碼
  • Django實(shí)現(xiàn)任意文件上傳(最簡單的方法)
  • Django 解決上傳文件時,request.FILES為空的問題
  • Django中文件上傳和文件訪問微項(xiàng)目的方法
  • django 文件上傳功能的相關(guān)實(shí)例代碼(簡單易懂)

標(biāo)簽:臺灣 宿遷 欽州 景德鎮(zhèn) 濟(jì)南 喀什 三沙 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《django上傳文件的三種方式》,本文關(guān)鍵詞  django,上傳,文件,的,三種,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《django上傳文件的三種方式》相關(guān)的同類信息!
  • 本頁收集關(guān)于django上傳文件的三種方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产91麻豆视频| 国产午夜久久| 色猫猫成人app| 国产精品爱啪在线线免费观看| 久久国产这里只有精品| 日韩成人av在线| 91好吊色国产欧美日韩在线| 欧美三级资源在线| 在线播放不卡| 日韩成人视屏| www.亚洲.com| 成人公开免费视频| 亚洲免费av高清| 久久夜色精品国产噜噜av| 欧美日本一区二区三区| 国产精品综合久久久| 一本综合久久| 在线观看黄色国产| 亚洲一区二区三区中文字幕在线| 91精品国产综合久久久久久久| 亚洲天堂网在线观看| 国产精品99导航| 91老师片黄在线观看| 中文字幕亚洲精品一区| 无码国产精品高潮久久99| 日本美女高潮视频| 亚洲精品一区二区三区四区五区| 久久精品中文字幕电影| 97视频在线观看免费高清完整版在线观看| 四虎影院观看视频在线观看| 在线电影一区二区| 国产毛片精品一区| 在线免费观看的av| 欧美精品在线网站| 国产av无码专区亚洲精品| 99久久国产综合色|国产精品| 波多野结衣二区三区| 日本性生活一级片| 一本色道久久综合| 久久久久久久国产精品毛片| 黄色精品免费| 久久综合伊人77777麻豆| 国产精品jk白丝蜜臀av小说| 好爽好深好紧好大| 日韩国产网站| 精品一区在线播放| 久久久亚洲综合网站| 久热精品视频在线| 青青草91视频| 少妇激情一区二区三区| 亚洲一级片在线播放| 最新国产一区二区| 久在线观看视频| 韩日在线播放| 免费一区视频| av图片在线观看| 久久精品一级片| 欧美日韩国产一中文字不卡| 美女露出粉嫩尿囗让男人桶| 国产欧美日韩亚洲精品| 欧美aaa级片| 国产精品99久久久久久成人| 日韩和欧美一区二区三区| 国产成人a亚洲精品| 久久久国产精华液| 99精品视频一区| 91av一区| 欧美成人一区二区三区高清| 日本人视频jizz页码69| 久久99精品久久久久久青青91| 欧美日韩国产123| 邪恶网站在线观看| 波多野结衣在线网址| 色999韩欧美国产综合俺来也| 一区二区三区在线免费| 国产免费区一区二区三视频免费| 日韩免费成人| 亚洲人成77777在线观看网| 免费在线毛片| 亚洲第一视频| 日韩**中文字幕毛片| 男插女视频久久久| 欧美成人综合色| 丰满少妇一区二区三区| 久久久精品美女| 亚洲综合色视频在线观看| 亚洲午夜日本在线观看| 日韩一中文字幕| 国产精品一二三在| 国产精品区一区二区三| 日本人成精品视频在线| 欧美成人一区二区三区| 成人激情电影一区二区| 一本一生久久a久久精品综合蜜| 国产精品久久久久永久免费观看| 欧美国产免费| 91九色视频在线观看| 影音先锋一区二区资源站| 一级毛片在线| 黄色网址视频在线观看| 国产拍欧美日韩视频二区| 久久国产精品二区| 欧美视频一二三| 久久国产成人午夜av影院| 色先锋资源在线播放av| 91手机在线视频| 秋霞综合在线视频| 91丨porny丨户外露出| 欧美高清一区二区| 欧美精品大片| 国产伦精品一区二区三区视频孕妇| 奇米亚洲欧美| av在线1区2区| 日韩欧美三级| 亚洲精品国产一区二| 精品无码一区二区三区蜜臀| 黄色美女久久久| 久久女同精品一区二区| 亚洲综合日韩欧美| 国产丝袜护土调教在线视频| av成人资源| 97精品国产aⅴ7777| 亚洲砖区区免费| yjizz视频网站在线播放| 懂色av一区二区三区免费看| 欧美福利视频网站| 国产精品视频yy9299一区| wwwwxxxx日本| 日韩色在线观看| 美洲精品一卡2卡三卡4卡四卡| 伊人色综合久久天天人手人婷| 久久久成人av| 影音先锋男人的网站| 黄色av电影网站| 亚洲视频一区二区三区| 91久久国产综合久久| 性高潮久久久久久久| 国产精品成久久久久| 污污视频免费看| 国产精品第三页| 日本在线视频网址| 精品少妇一区| 狠狠色丁香婷婷综合影院| 亚洲精品久久久久久下一站| igao视频网在线视频| 成人免费在线观看av| 欧美一区=区| 黄在线观看免费网站ktv| 日韩免费高清视频| 欧洲伦理片一区 二区 三区| 在线视频国内一区二区| 欧美做爰猛烈大尺度视频| 欧美极品在线播放| 看黄在线观看| 色悠悠久久综合网| 国产精品yjizz视频网| 7799精品视频天天看| 51国产成人精品午夜福中文下载| 国产区欧美区日韩区| 奇米777在线视频| 亚洲欧美日韩综合| 亚洲av片不卡无码久久| 国产日韩在线一区二区三区| 无码免费一区二区三区| 欧美一区免费视频| 亚洲精品福利在线观看| 亚洲a级精品| 亚洲第一成肉网| 中文无码精品一区二区三区| 美女黄色免费看| 日韩一区二区中文| 国产精品欧美激情在线观看| 欧美一区 二区 三区| 日韩一级高清毛片| 亚洲黄色免费在线观看| 国产精品羞羞答答| 一级在线观看| 国产成人精品999在线观看| 久久久久久久久久成人| 国产美女免费视频| 国产91在线播放| 亚洲欧洲精品一区| 欧美日韩激情视频8区| 国产精品久久91| 人人影院免费大片| 亚洲福利视频网| 日韩精品一区二区三区免费视频| 黄色亚洲大片免费在线观看| 欧美私人情侣网站| 日韩久久免费av| 麻豆电影在线观看| 色综合网色综合| 九色蝌蚪av新入口| 欧美va在线观看| 久久久999精品视频| 亚洲综合色婷婷| 中文字幕av一区二区三区谷原希美| 成年人看的毛片| 欧美性天天影院| 中文字幕一区日韩精品欧美| 日韩美女一级视频| 国产老头和老头xxxx×| 男人女人黄一级| 欧美激情综合色综合啪啪| 精品福利一区二区三区免费视频| 在线看日韩精品电影| 加勒比视频一区| 欧美精品一区二区不卡| 欧美精品在线第一页| 中文字幕在线中文字幕日亚韩一区| 欧美极品视频| 色婷婷激情视频| 免费h网站在线观看| 小草av在线播放| 久久精品国产亚洲av高清色欲| 国产熟女一区二区三区四区| 一个人看的www视频免费在线观看| 在线播放中文一区| 亚洲综合日韩欧美| 美女航空一级毛片在线播放| 亚洲va在线va天堂va偷拍| 九九精品视频免费| 男生操女生视频网站| 日本免费在线一区| 欧美激情综合在线| 国产亚洲一区二区三区在线观看| 国产精品热久久久久夜色精品三区| 国产精品av免费观看| 日韩在线视频免费观看高清中文| 在线播放不卡| 久久亚洲影院| 色九视频91| 91免费观看国产| 永久免费看片视频教学| h动漫在线视频| 欧美精品精品精品精品免费| 亚洲精品日产aⅴ| 久久日韩精品| 久草在线视频精品| 伊人网在线视频观看| 日韩在线视频不卡| 久久伦理网站| 日韩专区中文字幕一区二区| 国产美女视频一区二区| 成人区人妻精品一区二| 999国产精品999久久久久久| 国产精品毛片久久| 亚洲丶国产丶欧美一区二区三区| 国产精品伦理| 2019亚洲日韩新视频| 中文字幕亚洲高清| 91精品国产综合久久精品性色| 黄色一级视频免费看| 国产欧美精品aaaaaa片| 欧美四级电影网| 97热在线精品视频在线观看| 欧美黄色小说| 中文字幕有码在线视频| 欧美一区二区三区精品电影| 国产成人免费视频app| 亚洲精品喷潮一区二区三区| 国产一区免费在线| 87福利电影网| 久久99国产精品| 不卡区在线中文字幕| 91精品美女在线| 国产专区在线视频| 一级片在线观看视频| 欧美系列日韩一区| 欧一区二区三区| www.国产精品视频| 久久亚洲精精品中文字幕早川悠里| 丁香花在线观看完整版电影| 青青草在线免费观看| 欧美金发大战黑人最粗videos| 日韩免费视频一区二区视频在线观看| 欧美极品另类videosde| 欧美日韩免费观看一区| 成人a免费视频| 99成人在线视频| 成人免费av| 国产婷婷一区二区三区| 麻豆久久久久久久| 日韩欧美亚洲一区二区| 手机在线精品视频| 男人天堂av片| 国产精品资源网站| 亚洲精品www久久久| 91亚洲天堂| 欧美亚洲日本在线观看| 日韩一级毛片| 国产鲁鲁视频在线观看免费| 俺来俺也去www色在线观看| 午夜一级免费视频| 亚洲一区二区影院| 91精品国产福利| 国产一区二区三区日韩欧美| 欧美做受高潮6| 亚洲国产毛片完整版| 亚洲欧洲另类国产综合| 久久一二三国产| 国内精品久久久久国产盗摄免费观看完整版| 最近2019中文免费高清视频观看www99| www.欧美三级电影.com| 久久新电视剧免费观看| 国产免费一区二区三区在线能观看| 污污视频在线看| 国产精品最新自拍| 午夜精品久久久久久久| 亚洲一区二区久久久久久| 北京富婆泄欲对白| 午夜dj在线观看高清视频完整版| v片在线观看| 2021久久国产精品不只是精品| 超碰超碰人人人人精品| 成人国产视频在线观看| 色棕色天天综合网| 麻豆国产一区二区三区四区| 欧美日韩日本国产亚洲在线| 亚洲精品一区在线| 亚洲av无码国产精品永久一区| 精品久久视频| 六月婷婷激情网| 亚洲在线国产日韩欧美| 最新中文字幕在线视频| 另类亚洲自拍| 国产欧美一区二区三区另类精品| 国产freexxxx性播放麻豆|