django实现搜索功能

Posted 1998lu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django实现搜索功能相关的知识,希望对你有一定的参考价值。

实现功能:用户在搜索框输入关键词,过滤出带有关键词的文章。

新闻模型如下:

models.py

class Notices(models.Model):
    Category_List = ((‘新闻动态‘, ‘新闻动态‘), (‘通知公告‘, ‘通知公告‘),)
    NoticeID=models.AutoField(primary_key=True)
    NoticeTitle=models.CharField(‘新闻标题‘,max_length=50)
    NoticeContent = UEditorField(u‘内容    ‘, width=800, height=300, toolbars="full", imagePath="images/",filePath="files/",default=‘‘)
    NoticeData=models.DateField(‘时间‘,auto_now_add=True)
    NoticeDesc=models.CharField(‘新闻描述‘,max_length=50,blank=True)  #新闻描述
    NoticeUser=models.CharField(‘发布人‘,max_length=50,blank=True)#发布人
    #NoticeCategory = models.CharField(‘新闻分类‘,default=‘‘, max_length=10)  # 新闻分类
    NoticeCategory=models.CharField(‘新闻分类‘,choices=Category_List,default=1,max_length=10) #新闻分类
    class Meta:
        #结果集按照何种方式排序
        #ordering=[‘-time_added‘]
        #在数据库中的表名
        db_table = "std_web_notices"
        #对象的名称
        verbose_name = "新闻"
        #对象复数形式的名称
        verbose_name_plural = verbose_name

    def __unicode__(self):
        return self.title

 在前端html表单进行修改:

<form role="search" method="get" id="searchform" action="{% url ‘std_web:xwdt_search‘ %}">
  {% csrf_token %}          
  <input type="search" name="q" placeholder="标题过滤" required>        
  <button type="submit">搜索</button>

 {%csrf_token%}是django用来防御跨站请求伪造的机制。

从前端代码看到使用get方法,当用户提交搜索后,通过action找到相应的url进行跳转。

定义视图函数

views.py

def xwdt_search(request):
    q=request.GET.get(‘q‘)
    error_msg= ‘‘
    if not q:
        error_msg=‘请输入关键词‘
        return render(request,‘jsyw/xwdt.html‘,{‘error_msg‘:error_msg})
    post_list=Notices.objects.filter(NoticeTitle__icontains=q)
    return render(request, ‘jsyw/xwdt.html‘, {‘error_msg‘: error_msg,‘post_list‘:post_list})

q为查询框的name   

这里的查询条件NoticeTitle__icontains=q是指NoticeTitle包含q

绑定URL

url(r‘^xwdt_search/‘,views.xwdt_search,name=‘xwdt_search‘),

  

 

以上是关于django实现搜索功能的主要内容,如果未能解决你的问题,请参考以下文章

Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能

django实现搜索功能

SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML

django之搜索引擎功能实现

四十八 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

Django之使用haystack+whoosh实现搜索功能