day8:基于django的三方库

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个参数的具体数值才是满足要求的数据,并返回前端。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,058评论 0 8
  • 序 本篇文章主要是以django作为后端框架,将前端框架react集成进来,形成一种新型的WEB网站搭建模式。文章...
    钢筋铁骨阅读 17,483评论 12 55
  • 最近想用Django-shop做个网店,哪知道遇到坑。回过头来仔细看看CMS框架。没见到相关的资料,实在不能忍,自...
    海明_fd17阅读 11,772评论 0 12
  • 模板标签除了几个常用的,还真心没有仔细了解一下,看到2.0发布后,翻译学习一下。 本文尽量忠实原著,毕竟大神的东西...
    海明_fd17阅读 1,993评论 0 5
  • 13 上线 上一章中,你为你的项目创建了RESTful API。在本章中,你会学习以下知识点: 配置一个生产环境 ...
    lakerszhy阅读 1,490评论 1 6