竹内纱里奈和大战黑人_欧美成人黄色小视频_91福利影视_欧美在线观看视频网站_h色网站免费观看_97综合

極客小將

您現(xiàn)在的位置是:首頁 » python編程資訊

資訊內(nèi)容

看看 Python Django開發(fā) 異常及解決辦法

極客小將2021-01-20-
簡介相關(guān)免費(fèi)學(xué)習(xí)推薦:python視頻教程1.Djangoxadmin數(shù)據(jù)遷移報(bào)錯(cuò)ImportError:cannotimportname‘QUERY_TERMS’在進(jìn)行Djangoxadmin數(shù)據(jù)遷移時(shí)報(bào)錯(cuò):fromdjango.db.models.sql.queryimportLOOKUP_SEP,
tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

相關(guān)免費(fèi)學(xué)習(xí)推薦:python視頻教程tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

1.Django xadmin數(shù)據(jù)遷移報(bào)錯(cuò)ImportError: cannot import name ‘QUERY_TERMS’tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在進(jìn)行Django xadmin數(shù)據(jù)遷移時(shí)報(bào)錯(cuò):tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS ImportError: cannot import name 'QUERY_TERMS' from 'django.db.models.sql.query' (C:UsersLENOVO.virtualenvsDjango_Vue_Fresh_Ecommerce-NKba4OvDlibsite-packagesdjangodbmodelssqlquery.py)

由于xadmin的更新跟不上Django的更新,因此導(dǎo)致了xadmin的很多代碼出錯(cuò),需要進(jìn)行修改,這里將xadminpluginsfilters.py中from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS修改為from django.db.models.sql.query import LOOKUP_SEP, Query,還需要將47行的if len(parts) > 1 and parts[-1] in Query:修改為if len(parts) > 1 and parts[-1] in QUERY_TERMS:。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

2.Django xadmin報(bào)錯(cuò)TypeError: render() got an unexpected keyword argument ‘renderer’tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在Django登錄進(jìn)入xadmin后臺(tái)時(shí),在添加小部件時(shí),會(huì)報(bào)錯(cuò),如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

return widget.render(TypeError: render() got an unexpected keyword argument 'renderer'

解決辦法有兩種:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

修改Django源碼
找到libsite-packagesdjangoformsoundfield.py,找到第96行,注釋掉即可,如下:return widget.render( name=self.html_initial_name if only_initial else self.html_name, value=self.value(), attrs=attrs, # renderer=self.form.renderer,)

此時(shí)再點(diǎn)擊Add Budgets就不會(huì)再報(bào)錯(cuò)了。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

修改xadmin代碼
在xadmin/views/dashboard.py中修改render()函數(shù),第36行改為def render(self, name, value, attrs=None, renderer=None):,即增加renderer參數(shù)為None。

兩種方法皆可,但是個(gè)人建議采用第二種方法,因?yàn)閤admin是外部引入到extra_apps作為外部的app,本身就可能經(jīng)過了一定修改,在此基礎(chǔ)上再修改也影響不大,而django是虛擬環(huán)境所帶的依賴庫,相當(dāng)于是系統(tǒng)文件,因此不要輕易修改。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

3.Django xadmin報(bào)錯(cuò)RuntimeError: isn’t in an application in INSTALLED_APPS.tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在進(jìn)行數(shù)據(jù)庫映射時(shí),報(bào)錯(cuò)如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

raise RuntimeError(RuntimeError: Model class django.contrib.admin.models.LogEntry doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

解決辦法是在settings.py中的INSTALLED_APPS中增加django.contrib.admin,如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'apps.users.apps.UsersConfig', 'goods', 'trade', 'user_operation', 'DjangoUeditor', 'xadmin', 'crispy_forms', 'django.contrib.admin']

4.Django配置Restful framework報(bào)錯(cuò)__str__ returned non-string (type NoneType)tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在Django項(xiàng)目中配置Restful framework時(shí),報(bào)錯(cuò)__str__ returned non-string (type NoneType),如下:

這可能是自定義用戶模型代替Django自帶的用戶模型時(shí),允許name(或相似的)字段允許為空,例如name = models.CharField(max_length=30, null=True, blank=True, verbose_name='姓名')所以會(huì)返回non-string報(bào)錯(cuò),完整模型如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

class UserProfile(AbstractUser): '''用戶''' name = models.CharField(max_length=30, null=True, blank=True, verbose_name='姓名') birthday = models.DateField(null=True, blank=True, verbose_name='出生日期') gender = models.CharField(max_length=6, choices=(('male', u'男'), ('female', u'女')), default='female', verbose_name='性別') mobile = models.CharField(max_length=11, verbose_name='電話') email = models.CharField(max_length=50, null=True, blank=True, verbose_name='郵箱') is_delete = models.BooleanField(default=False, verbose_name='是否刪除') class Meta: verbose_name = '用戶' verbose_name_plural = '用戶' def __str__(self): return self.name

解決辦法有2種:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

退出admin或xadmin后臺(tái)登錄
退出后臺(tái)管理登錄,操作如下:
修改用戶模型__str__()方法
因?yàn)樽远x用戶如UserProfile繼承自AbstractUser,而AbstractUser模型有username屬性,不允許為空,所以可以設(shè)置為返回self.username,即如下:def __str__(self): return self.username

此時(shí)不登出后臺(tái)管理也可以正常訪問。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

5.DRF報(bào)錯(cuò)AssertionError: basename argument not specifiedtHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在Restful framework中使用過濾器時(shí)報(bào)錯(cuò):tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

assert queryset is not None, '`basename` argument not specified, and could ' AssertionError: `basename` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.queryset` attribute.

報(bào)錯(cuò)提示很明顯,assert queryset不是None,未指定“basename”參數(shù),顯然需要在使用router定義路由時(shí)指定basename參數(shù),如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

router = DefaultRouter()# 配置goods的路由router.register(r'goods', GoodsListViewSet, basename='goods')

即在urls.py中使用router配置路由時(shí)加入basename參數(shù)即可。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

6.UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_listtHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

paginator = self.django_paginator_class(queryset, page_size)
在Django Restful framework中實(shí)現(xiàn)視圖時(shí)對(duì)某一類數(shù)據(jù)進(jìn)行分頁并在前端請(qǐng)求訪問數(shù)據(jù)時(shí)顯示警告信息如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

XXXlibsite-packages est_frameworkpagination.py:200: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'goods.models.Goods'> QuerySet. paginator = self.django_paginator_class(queryset, page_size)

提示的是無序?qū)ο罅斜砭妫馑际菍?duì)數(shù)據(jù)結(jié)果進(jìn)行排序,在views.py中取數(shù)據(jù)時(shí)加入排序即可,默認(rèn)可以按照id進(jìn)行排序,示意如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): '''商品列表頁,并實(shí)現(xiàn)分頁、搜索、過濾、排序''' queryset = Goods.objects.filter(is_delete=False).order_by('id') # 添加根據(jù)id排序即可 serializer_class = GoodsSerializer pagination_class = GoodsPagination filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter] filter_class = GoodsFilter search_fields = ['name', 'goods_brief', 'goods_desc'] ordering_fields = ['sold_num', 'shop_price']

此時(shí)再運(yùn)行,不再顯示警告信息。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

7.Django Restful framework中使用JWT實(shí)現(xiàn)自定義驗(yàn)證{“non_field_errors”:[“無法使用提供的認(rèn)證信息登錄。”]}tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

先聲明小編使用的Django版本為3.0,后面有用。
在DRF中使用驗(yàn)證時(shí)經(jīng)常會(huì)使用JSON Web Token進(jìn)行驗(yàn)證,settings.py配置如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

# DRF配置REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ]}# 自定義用戶認(rèn)證配置AUTHENTICATION_BACKENDS = [ 'users.views.CustomBackend',]

apps/users/views.py如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

from django.db.models import Qfrom django.contrib.auth.backends import ModelBackendfrom django.contrib.auth import get_user_model User = get_user_model()# Create your views here.class CustomBackend(ModelBackend): '''自定義用戶驗(yàn)證''' def authenticate(self, username=None, password=None, **kwargs): try: print(123) user = User.objects.get(Q(username=username)|Q(mobile=username)) if user.check_password(password) and user.is_delete != True: print(456) return user except Exception as e: return None

urls.py配置如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [ # JWT認(rèn)證路由 url(r'^login/', obtain_jwt_token),]

但是在模擬請(qǐng)求訪問時(shí)卻未收到token,只提示錯(cuò)誤信息{"non_field_errors":["無法使用提供的認(rèn)證信息登錄。"]} ,這讓我很苦惱,明明所有配置都沒問題啊,百思不得姐,到底哪里出了問題了呢?一直不停的排錯(cuò)、Debug,卻還是一樣的錯(cuò)誤,這讓我很郁悶。**后不得不去求助于JWT*方文檔,看到環(huán)境要求仿佛有點(diǎn)兒感覺了:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

Requirements
Python (2.7, 3.3, 3.4, 3.5)
Django (1.8, 1.9, 1.10)
Django REST Framework (3.0, 3.1, 3.2, 3.3, 3.4, 3.5)tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

這里要求的**高Django版本為1.9,而我自己的Django版本為3.0,憑直覺立馬想到會(huì)不會(huì)是版本不兼容的問題,導(dǎo)致了某些地方不一致。jwt部分就不說了,本身版本沒怎么更新,可能問題出在了Django和DRF上面,而**有可能出問題的就是自定義驗(yàn)證類,CustomBackend繼承自ModelBackend,于是我到django.contrib.auth.backends源碼中查看,其定義如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

class ModelBackend(BaseBackend): """ Authenticates against settings.AUTH_USER_MODEL. """ def authenticate(self, request, username=None, password=None, **kwargs): if username is None: username = kwargs.get(UserModel.USERNAME_FIELD) if username is None or password is None: return try: user = UserModel._default_manager.get_by_natural_key(username) except UserModel.DoesNotExist: # Run the default password hasher once to reduce the timing # difference between an existing and a nonexistent user (#20760). UserModel().set_password(password) else: if user.check_password(password) and self.user_can_authenticate(user): return user ...

為了驗(yàn)證是否是版本的問題,我在系統(tǒng)環(huán)境中安裝了JWT指定的Django版本1.9用于進(jìn)行對(duì)比,再查看django.contrib.auth.backends.py:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

class ModelBackend(object): """ Authenticates against settings.AUTH_USER_MODEL. """ def authenticate(self, username=None, password=None, **kwargs): UserModel = get_user_model() if username is None: username = kwargs.get(UserModel.USERNAME_FIELD) try: user = UserModel._default_manager.get_by_natural_key(username) if user.check_password(password): return user except UserModel.DoesNotExist: # Run the default password hasher once to reduce the timing # difference between an existing and a non-existing user (#20760). UserModel().set_password(password)

到現(xiàn)在,你們是否發(fā)現(xiàn)了什么(^_^)?tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

哈哈,你猜的沒錯(cuò),是新版中的authenticate()方法發(fā)生了改變,增加了request參數(shù),而自定義驗(yàn)證類時(shí)就是繼承ModelBackend類并重寫authenticate()方法,而我使用的參數(shù)采用的是老版本中的參數(shù),與本應(yīng)繼承的新版本中的方法參數(shù)不一致,所以就不是重寫而是重載了,所以在請(qǐng)求時(shí)驗(yàn)證調(diào)用的方法并不是自定義的authenticate(),而是ModelBackend類中的authenticate()方法明白怎么回事了就趕緊改了試試,再次測(cè)試{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTk1ODk2MTc3LCJlbWFpbCI6IjEyM0AxMjMuY29tIn0.pblxNy4s4XBrqmnsfI9-dmx3Q8rErqq1WbN4rfBSZfI"},一片光明,真是版本不兼容害苦了我,以后得注意了。tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

8.Django使用DRF實(shí)現(xiàn)注冊(cè)功能報(bào)錯(cuò)Got AttributeError when attempting to get a valuetHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在使用DRF實(shí)現(xiàn)注冊(cè)功能時(shí),前端的用戶名(手機(jī)號(hào))、驗(yàn)證碼、郵箱傳到后端處理時(shí),由于驗(yàn)證碼不屬于用戶的一個(gè)字段,但是為了驗(yàn)證又必須設(shè)置該字段,如果不注意,就容易報(bào)錯(cuò),一般如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

raise type(exc)(msg)AttributeError: Got AttributeError when attempting to get a value for field `code` on serializer `UserRegSerializer`.The serializer field might be named incorrectly and not match any attribute or key on the `UserProfile` instance.Original exception text was: 'UserProfile' object has no attribute 'code'.

報(bào)錯(cuò)提示很明顯,UserProfile沒有code屬性。具體來說,這是因?yàn)镸eta中指定了fields = ['username', 'code', 'mobile', 'password'],包含code字段,而在驗(yàn)證時(shí)為了判斷驗(yàn)證碼的正誤而臨時(shí)加入code字段,但是在validate(attrs)又將其刪去,導(dǎo)致在序列化時(shí)找不到code字段,因此出錯(cuò),這是需要將字段的write_only設(shè)置True,以確保在更新或創(chuàng)建實(shí)例時(shí)可以使用該字段,但是在序列化表示形式時(shí)不包括該字段,即設(shè)置為如下即可: tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

code = serializers.CharField(max_length=4, min_length=4, write_only=True, label='驗(yàn)證碼', help_text='驗(yàn)證碼', error_messages={ 'required': '請(qǐng)輸入驗(yàn)證碼', 'blank': '請(qǐng)輸入驗(yàn)證碼', 'max_length': '請(qǐng)輸入4位驗(yàn)證碼', 'min_length': '請(qǐng)輸入4位驗(yàn)證碼' })

9.DRF訪問文檔路由報(bào)錯(cuò)AttributeError: ‘AutoSchema’ object has no attribute ‘get_link’tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

DRF提供了文檔功能,無需再專門寫文檔即可同步使用文檔,但是在訪問http://127.0.0.1:8000/docs/的時(shí)候可能報(bào)錯(cuò):tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

link = view.schema.get_link(path, method, base_url=self.url)AttributeError: 'AutoSchema' object has no attribute 'get_link'

此時(shí)需要在settings.py中進(jìn)行配置:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

# DRF配置REST_FRAMEWORK = { ... 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema', ...}

重新加載之后再次訪問就會(huì)訪問到文檔頁面,如下:
tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

10.DRF動(dòng)態(tài)設(shè)置權(quán)限tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

在DRF中經(jīng)常會(huì)用到權(quán)限,一般情況下是在視圖ViewSet類下設(shè)置屬性permission_classes = [IsAuthenticated, IsOwnerOrReadOnly],但是這對(duì)于請(qǐng)求的所有方法(如create、retrieve、list)均有效,不能對(duì)不同的方法進(jìn)行不同的限制,因此可以進(jìn)行動(dòng)態(tài)設(shè)置權(quán)限,即重寫get_permissions()方法,針對(duì)不同地方法返回不同的權(quán)限,如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

def get_permissions(self): '''動(dòng)態(tài)設(shè)置權(quán)限''' if self.action == 'retrieve': return [IsAuthenticated] elif self.action == 'create': return [] return []

但是會(huì)報(bào)錯(cuò)如下:tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

if not permission.has_permission(request, self):TypeError: has_permission() missing 1 required positional argument: 'view'

這是因?yàn)榉祷氐目赡苁菣?quán)限類,即return [IsAuthenticated],這里只是返回了一個(gè)權(quán)限類,并沒有實(shí)例化,即沒有初始化,導(dǎo)致APIView在初始化時(shí)沒有傳入正確的權(quán)限,因此報(bào)錯(cuò),修改為return [IsAuthenticated()]、返回實(shí)例化后的對(duì)象即可。

以上就是看看 Python Django開發(fā) 異常及解決辦法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注少兒編程網(wǎng)其它相關(guān)文章!tHQ少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 91九色在线观看 | 一级黄色在线看 | 欧美不卡视频 | 国产高清无密码一区二区三区 | 97在线免费观看视频 | 伊人91 | 国内精品国产三级国产在线专 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 久久久久久高清 | 日本公妇乱淫免费视频一区三区 | 激情在线视频 | 国产传媒av| 亚洲淫片| 日韩欧美电影在线观看 | 在线观看日韩视频 | 精品国产髙清在线看国产毛片 | 欧美日韩国产在线 | 国产一区 | 寡妇一级毛片免费看 | 国产精品久久久久久久久久久久午夜片 | 午夜综合 | 精品久久中文字幕 | 久久国产欧美一区二区三区精品 | 麻豆精品一区二区 | 波多野结衣在线播放一区 | 久久免费高清 | 久久av喷吹av高潮av萌白 | 精品国产精品国产偷麻豆 | 中文字幕免费在线视频 | 亚洲第一av在线 | 黄色av免费| 亚洲综合色av | 日本一区二区三区久久久 | 国内精品一区二区三区 | 成人午夜免费电影 | 五月婷婷综合激情 | 一区二区三区精品 | 免费看黄网址 | 亚洲аv电影天堂网 | 国产精品美女一区二区三区 | 日韩a电影 |