zoukankan      html  css  js  c++  java
  • 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

    如果要实现两个条件查询语句可以这样写

    post_list=Notices.objects.filter(NoticeCategory='新闻动态',NoticeTitle__icontains=q)
    

      

    绑定URL

    url(r'^xwdt_search/',views.xwdt_search,name='xwdt_search'),
  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/1998lu/p/9979290.html
Copyright © 2011-2022 走看看