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'),
  • 相关阅读:
    解决Windows 10每次重启默认浏览器都被重置为IE的一个办法
    使用cookie登录百度网盘账号
    【C++ Primer | 14】重载运算
    Visual Studio Code 快捷键的使用
    【C++ Primer | 8】IO库
    Git push常见用法
    Git 基础
    Git连接GitHub仓库详解
    ceph关于rpm包构建的教程
    monitor综合
  • 原文地址:https://www.cnblogs.com/1998lu/p/9979290.html
Copyright © 2011-2022 走看看