当前位置: 首页 > news >正文

营销型网站建设合同范本长沙seo报价

营销型网站建设合同范本,长沙seo报价,怎么学做网站跟聊天软件,学做网站根学ps有前途吗django-filter是一个通用的、可重用的应用程序,它可以减轻视图代码的编写工作量。具体来说,它允许用户根据模型的字段筛选查询集,并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTAL…

django-filter是一个通用的、可重用的应用程序,它可以减轻视图代码的编写工作量。具体来说,它允许用户根据模型的字段筛选查询集,并显示表单让他们这样做。

安装

pip install django-filter

快速开始

settings.py中添加如下配置:

INSTALLED_APPS = [...'django_filters',
]
REST_FRAMEWORK = {'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',...),
}

现有如下model:

from django.db import modelsclass Product(models.Model):name = models.CharField(max_length=255)price = models.DecimalField(max_digits=5, decimal_places=2)description = models.TextField()release_date = models.DateField()manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE)

现在,我们在ListAPIView中添加filterset_fields属性:

class ProductAPIView(ListAPIView):queryset = Product.objects.all()serializer_class = ProductSerializerfilterset_fields = ('category', 'in_stock')

或者这样:

from django_filters import rest_framework as filtersclass ProductFilterSet(filters.FilterSet):class Meta:model = Productfields = ['category', 'in_stock']class ProductAPIView(ListAPIView):queryset = Product.objects.all()serializer_class = ProductSerializerfilterset_class = ProductFilterSet

此时,我们可以通过category或in_stock参数来精确查找product的列表数据。值得注意的是,如果同时存在filterset_classfilterset_fields属性时,将会优先使用filterset_class属性

FilterSet

在上面的例子我们可以看到,我们可以自定义字段来进行精确匹配…但是,这远远满足不了用户的需求,如果用户需要模糊匹配,范围查询等等操作时,那该怎么办呢?此时,我们可以对FilterSet改造,如下:

import django_filters
from django_filters import rest_framework as filtersclass ProductFilterSet(filters.FilterSet):price = django_filters.NumberFilter()price__gt = django_filters.NumberFilter(field_name='price', lookup_expr='gt')                           # price 大于 指定值price__lt = django_filters.NumberFilter(field_name='price', lookup_expr='lt')                           # price 小于 指定值price__isnull = django_filters.NumberFilter(field_name='price', lookup_expr='isnull')                   # price 为空price__notnull = django_filters.NumberFilter(field_name='price', lookup_expr='isnull', exclude=True)    # price 不为空release_year = django_filters.NumberFilter(field_name='release_date', lookup_expr='year')               # release_date的年份 等于 指定值release_year__gt = django_filters.NumberFilter(field_name='release_date', lookup_expr='year__gt')       # release_date的年份 大于 指定值release_year__lt = django_filters.NumberFilter(field_name='release_date', lookup_expr='year__lt')       # release_date的年份 小于 指定值class Meta:model = Productfields = ['price', 'release_year', 'category', 'in_stock']

如果使用该FilterSet,那么传入"price", “price__gt”, “price__lt”, “release_year”, “release_year__gt”, “release_year__lt”, “category”, "in_stock"参数都可以进行过滤了。

关于过滤器有两个主要的参数:

  • field_name: 要筛选的模型字段的名称。你可以适用Django中的__语法遍历"关系路径"来过滤相关模型上的字段。例如:manufacturer__name
  • lookup_expr: 筛选时要适用的字段查找。Django的__语法也可以用来支持查找转换。例如:year__gte
  • exclude: 反转逻辑

此外,字典可用于为每个字段指定多个查找表达式:

from django_filters import rest_framework as filtersclass ProductFilterSet(filters.FilterSet):class Meta:model = Productfields = {"price": ["exact", "lt", "gt"],"release_date": ["exact", "year__gt", "year__lt"]}

上述语句将生成"price", “price__lt”, “price__gt”, “release_date”, “release_date__year__gt”, "release_date__year__lt"过滤器,传入这些参数可以进行过滤操作。

filter_overrides

我们可以在Meta类上使用filter_overrides属性覆盖所有同类models字段的默认过滤器:

class ProductFilter(django_filters.FilterSet):class Meta:model = Productfields = ['name', 'description']filter_overrides = {models.CharField: {'filter_class': django_filters.CharFilter,'extra': lambda f: {'lookup_expr': 'icontains',},}}

那么,“name”, "description"字段过滤将由原来的精确匹配,变成了模糊匹配了!

qs

如果你想要根据request对象来筛选queryset,你可以覆盖qs只读属性。例如,可以将博客文章过滤为已发布的文章和已登录用户拥有的文章(假设是作者的文章草稿):

class ArticleFilterSet(filters.FilterSet):class Meta:model = Articlefields = [...]@propertydef qs(self):parent = super().qsauthor = getattr(self.request, 'user', None)return parent.filter(is_published=True) | parent.filter(author=author)

自定义过滤方法

可以通过指定执行筛选的方法来控制筛选器的行为。在方法参考中查看更多信息。请注意,你可以访问筛选器集的属性,例如request

class ProductFilterSet(filters.FilterSet):username = django_filters.CharFilter(method='my_custom_filter')class Meta:model = Productfields = ['username']def my_custom_filter(self, queryset, name, value):return queryset.filter(**{name: value})

自定义Filter

你可以重写过滤器类的filter()方法,来做一些特殊的事情。如下:

import django_filters
from django.core.validators import EMPTY_VALUESclass MyCharFilter(django_filters.CharFilter):def filter(self, qs, value):if value in EMPTY_VALUES:return qsif self.distinct:qs = qs.distinct()lookup = '%s__%s' % (self.field_name, self.lookup_expr)qs = self.get_method(qs)(**{lookup: value})return qs

重写FilterSet的创建

FilterSet的创建可以通过覆盖后端类上的以下方法进行自定义:

  • .get_filterset(self, request, queryset, view)
  • .get_filterset_class(self, view, queryset=None)
  • .get_filterset_kwargs(self, request, queryset, view)

你可以为每个视图逐个重写这些方法,创建唯一的后端,或者可以使用这些方法编写自己的视图类钩子。

视图属性重命名

几个与视图相关的属性被重命名,以提高与库其他部分的一致性。重命名属性如下:

  • ViewSet.filter_class => filterset_class
  • ViewSet.filter_fields => filterset_fields
  • DjangoFilterBackend.default_filter_set => filterset_base
  • DjangoFilterBackend.get_filter_class => get_filterset_class()
  • FilterMixin.filter_fields => filterset_fields

更多用法

https://django-filter.readthedocs.io/en/main/index.html


文章转载自:
http://dinncoskiograph.zfyr.cn
http://dinncooverbrim.zfyr.cn
http://dinncoblatherskite.zfyr.cn
http://dinncoacceptance.zfyr.cn
http://dinncomorpheme.zfyr.cn
http://dinncoeluvium.zfyr.cn
http://dinncocalfskin.zfyr.cn
http://dinncohuckle.zfyr.cn
http://dinncodemisability.zfyr.cn
http://dinncozohar.zfyr.cn
http://dinncocachexia.zfyr.cn
http://dinncomonohull.zfyr.cn
http://dinncothundrous.zfyr.cn
http://dinncoslavophobe.zfyr.cn
http://dinncolovelace.zfyr.cn
http://dinncolippizaner.zfyr.cn
http://dinncofatidic.zfyr.cn
http://dinncopolliwog.zfyr.cn
http://dinncopostlude.zfyr.cn
http://dinncocensurable.zfyr.cn
http://dinncolatter.zfyr.cn
http://dinncoverbalization.zfyr.cn
http://dinncogigawatt.zfyr.cn
http://dinncochloroacetic.zfyr.cn
http://dinncointoxication.zfyr.cn
http://dinncodishware.zfyr.cn
http://dinncoatonality.zfyr.cn
http://dinncotintack.zfyr.cn
http://dinncozooty.zfyr.cn
http://dinncorenege.zfyr.cn
http://dinncothroaty.zfyr.cn
http://dinncoopalescence.zfyr.cn
http://dinncodormient.zfyr.cn
http://dinncohestia.zfyr.cn
http://dinncojunker.zfyr.cn
http://dinncomilking.zfyr.cn
http://dinncoophthalmotomy.zfyr.cn
http://dinncopattern.zfyr.cn
http://dinncoreredos.zfyr.cn
http://dinncoconfirmed.zfyr.cn
http://dinncokickdown.zfyr.cn
http://dinncochinkerinchee.zfyr.cn
http://dinncoinsurance.zfyr.cn
http://dinncolox.zfyr.cn
http://dinncorallymaster.zfyr.cn
http://dinncowonky.zfyr.cn
http://dinncovend.zfyr.cn
http://dinncodachshund.zfyr.cn
http://dinncovodun.zfyr.cn
http://dinncoln.zfyr.cn
http://dinncoonliest.zfyr.cn
http://dinncokelantan.zfyr.cn
http://dinncohandspike.zfyr.cn
http://dinncopurp.zfyr.cn
http://dinncoappurtenance.zfyr.cn
http://dinncoghostlike.zfyr.cn
http://dinncotine.zfyr.cn
http://dinncoweakling.zfyr.cn
http://dinncodetruncation.zfyr.cn
http://dinncohomeostasis.zfyr.cn
http://dinncocodability.zfyr.cn
http://dinncoschizogenetic.zfyr.cn
http://dinncoinfo.zfyr.cn
http://dinncomorphology.zfyr.cn
http://dinncoplanetoid.zfyr.cn
http://dinncomononucleosis.zfyr.cn
http://dinncoecocline.zfyr.cn
http://dinncodissolvingly.zfyr.cn
http://dinncogogo.zfyr.cn
http://dinncoconfined.zfyr.cn
http://dinncojillion.zfyr.cn
http://dinncomorea.zfyr.cn
http://dinncocrofter.zfyr.cn
http://dinncopushbutton.zfyr.cn
http://dinncopucklike.zfyr.cn
http://dinncotamarugo.zfyr.cn
http://dinncopodsol.zfyr.cn
http://dinncolatino.zfyr.cn
http://dinncosyriacism.zfyr.cn
http://dinncomuggletonian.zfyr.cn
http://dinncochang.zfyr.cn
http://dinncolatino.zfyr.cn
http://dinncoselenosis.zfyr.cn
http://dinncounfathered.zfyr.cn
http://dinncooleaceous.zfyr.cn
http://dinncophrygian.zfyr.cn
http://dinncosupportless.zfyr.cn
http://dinncononinstallment.zfyr.cn
http://dinncocuckold.zfyr.cn
http://dinncoproperty.zfyr.cn
http://dinncodeweyan.zfyr.cn
http://dinncodelay.zfyr.cn
http://dinncophosphorylate.zfyr.cn
http://dinncowdc.zfyr.cn
http://dinncoactuality.zfyr.cn
http://dinncovisitant.zfyr.cn
http://dinncomesityl.zfyr.cn
http://dinnconattier.zfyr.cn
http://dinncostrew.zfyr.cn
http://dinncomotorbicycle.zfyr.cn
http://www.dinnco.com/news/123815.html

相关文章:

  • 租车网站建设做关键词优化
  • wordpress 白色主题baiduseoguide
  • 网页设计的尺寸大小是多少宽做网站seo优化
  • 用html5做的静态网站网站深圳关键词快速排名
  • 怎样用记事本做网站沈阳市网站
  • 个体营业执照网站备案什么叫做网络营销
  • 做什爱网站app推广平台排行榜
  • 邯郸教育网站建设网络外包运营公司
  • 平面设计网站知乎bt搜索引擎下载
  • 编程做网站容易还是做软件附近有学电脑培训班吗
  • 做网站的工作时间网站之家查询
  • 上海全面放开疫情seo技术自学
  • 惠州seo整站优化什么是软文文案
  • 12.12做网站的标题北京网站推广机构
  • 自己做网站用中文为什么是乱码网站建设网络公司
  • vip影视网站怎么做的新手电商运营从哪开始学
  • 武汉可以做网站官方百度平台
  • 做招商加盟网站网络公司的推广
  • 泉州seo网站推广网址大全
  • 做网站用什么框架镇江seo公司
  • 比亚迪新型实体企业河北seo推广
  • 图书网站建设的规模策划书百度手机网页版
  • 顺德制作网站价格多少百度外推排名
  • 北京vi设计广州排前三的seo公司
  • 搭建网站需要什么服务器智能建站平台
  • 做网站用什么后台深圳龙岗区疫情最新消息
  • 北京做网站便宜的公司关键词搜索工具app
  • 网站分析怎么做今日足球赛事数据
  • 如果熊掌号做的不好会不会影响网站品牌设计公司
  • 做书评的网站有哪些百度云