stacklens / dusai-blog

杜赛的博客的评论区。详情见 Issue。
2 stars 0 forks source link

article/112/ #91

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Django-Vue搭建个人博客:过滤文章 - 杜赛的博客

https://www.dusaiphoto.com/article/112/

LY-lee commented 3 years ago

我设置了搜索,不论是完整匹配还是模糊匹配都不起作用,还是会把整个列表查出来,请问这是为什么呢

hashqueue commented 3 years ago

感谢博主提供的教程~

django-filter也可以实现模糊搜索功能,需要自定义过滤器类来实现。

class ArticleTitleFilter(filters.FilterSet):
    """
    自定义文章标题过滤器类,实现对文章标题进行模糊搜索(不区分大小写)
    """
    title = filters.CharFilter(field_name='title', lookup_expr='icontains', label='文章标题(模糊搜索且不区分大小写)')

    class Meta:
        model = Article
        fields = ['title']

# Create your views here.
class ArticlesViewSet(viewsets.ModelViewSet):
    queryset = Article.objects.all().order_by('-create_time')
    permission_classes = [IsAdminOrReadOnly]
    # 使用自定义文章标题过滤器类类
    filterset_class = ArticleTitleFilter
hashqueue commented 3 years ago

补一下导入的包的代码-。-

from django_filters import rest_framework as filters
flyweights commented 3 years ago

前者是精确,后者是模糊,大家要注意啦,还有就是INSTALLED_APPS = [ ... 'rest_framework', 'django_filters', ... ]

xzg3134 commented 2 years ago

我是这样导包才可行from rest_framework.filters import SearchFilter

late-nightpoet commented 2 years ago

得添加INSTALL_APP,否则搜索时会提示TemplateDoesNotExist错误

late-nightpoet commented 2 years ago

我设置了搜索,不论是完整匹配还是模糊匹配都不起作用,还是会把整个列表查出来,请问这是为什么呢

模糊搜索时要注意命令行写的语句格式是跟精准搜索时不一样的,使用模糊搜索时页面上会显示一个过滤器,你在过滤器上填上文章的题目再看俺url的语句,它显示应该为http://127.0.0.1:8000/api/article/?search=post

mike-egg123 commented 2 years ago

想问一下,我使用rest_framework.filters的SearchFilter为啥怎么搜都会把整个列表返回来呢?

mike-egg123 commented 2 years ago

完全匹配的就可以,很怪,不知道什么情况了

mike-egg123 commented 2 years ago

哦哦懂了,模糊匹配的url参数就只有一个"search"了,填入的值会在指定的属性中模糊匹配

allisgao commented 1 year ago

回复

late-nightpoet commented on 2022年4月18日

感谢。在postman上,参数的key要设置为search。 在浏览器上,在“过滤器”那块直接填上模糊搜索的内容就可以了,然后浏览器会自动补上?search=XXX