美文网首页
day8:基于django的三方库

day8:基于django的三方库

作者: ATM_shark | 来源:发表于2019-03-04 20:52 被阅读0次

    1、django-debug-toolbar;————debug查看工具,辅助开发
    2、django-filter;————数据筛选工具,可用于开发、生产
    3、django-cors-middleware;————跨域访问限制工具,可禁止和允许跨域请求访问

    三个三方库均需在项目 settings.py 文件中的 INSTALLED_APPS 中加入方可使用。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        #加入三个三方库(其实可以看成app)
        'debug_toolbar',
        'rest_framework',
        'django_filters',
        'corsheaders',
    ]
    

    然后,debug_toolbar 和 corsheaders 还得将其添加到中间件 MIDDLEWARE 配置信息中

    MIDDLEWARE = [
        #注意:corsheaders跨域访问配置信息最好放在第一位,才能生效;
        'corsheaders.middleware.CorsMiddleware',
        'debug_toolbar.middleware.DebugToolbarMiddleware',
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    

    其次,debug-toolbar还需在settings.py中加入以下配置信息:

    DEBUG_TOOLBAR_CONFIG = {
        # 引入jquery库
        'JQUERY_URL': 'https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js',
        # 工具栏是否折叠
        'SHOW_COLLAPSED': True,
        # 是否显示工具栏
        'SHOW_TOOLBAR_CALLBACK': lambda x: True,
    }
    

    然后,corsheaders 还得在settings.py配置跨区信息:

    # 配置跨域白名单
    CORS_ORIGIN_WHITELIST = ('www.abc.com', 'www.baidu.com')
    #符合正则表达式的跨域白名单
    CORS_ORIGIN_REGEX_WHITELIST = ('^(https?://)?(\ w + \。)?google \ .com $', )
    #是否允许Cookie包含在跨站点HTTP请求(CORS)中,默认为false
    CORS_ALLOW_CREDENTIALS = True
    #是否所有的访问都将被允许,白名单不会被使用,默认为false
    CORS_ALLOW_METHODS = ('GET', 'POST', 'PUT', 'DELETE')
    

    注意:
    完成配置后,django-debug-toolbar,django-cors-middleware便可使用。但是注意,正式上线时,需要清除django-debug-toolbar,毕竟它是用来辅助开发的,不是正式产品功能。
    =================================
    同时,django_filters还得继续编写自定义过滤器 方可使用。
    django_filters是用来在前端输入参数即可过滤掉不必要数据的工具。

    class HouseInfoViewSet(CacheResponseMixin, ReadOnlyModelViewSet):
        #查询的对象
        queryset = HouseInfo.objects.all() \
            .select_related('type', 'district', 'estate', 'agent') \
            .prefetch_related('tags').order_by('-pubdate')
        #序列化查询对象
        serializer_class = HouseInfoSerializer
    
        #数据过滤功能
        filter_backends = (DjangoFilterBackend, OrderingFilter)
        #数据过滤器
        filterset_class = HouseInfoFilter
        #排序字段(升序)
        ordering = ('price',)
        ordering_fields = ('price', 'area')
    
    class HouseInfoFilter(drf.FilterSet):
        """自定义房源数据过滤器"""
    
        title = drf.CharFilter(lookup_expr='starts')
        dist = drf.NumberFilter(field_name='district')
        min_price = drf.NumberFilter(field_name='price', lookup_expr='gte')
        max_price = drf.NumberFilter(field_name='price', lookup_expr='lte')
        type = drf.NumberFilter()
    
        class Meta:
            model = HouseInfo
            fields = ('title', 'district', 'min_price', 'max_price', 'type')
    

    以上视图函数组合后,可在前端输入的参数有5个,但这5个参数是并且关系,只有同时满足的这5个参数的具体数值才是满足要求的数据,并返回前端。

    相关文章

      网友评论

          本文标题:day8:基于django的三方库

          本文链接:https://www.haomeiwen.com/subject/aqlwuqtx.html