django實現搜索功能
阿新 • • 發佈:2018-11-18
形式 blank 輸入關鍵詞 default 輸入 fault ins form orf
實現功能:用戶在搜索框輸入關鍵詞,過濾出帶有關鍵詞的文章。
新聞模型如下:
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實現搜索功能