本文是我们利用Django开发智能文档管理系统smartdoc的终章。对于智能文档管理,最不可或缺的功能就是搜索。在Django实战教程: 开发企业级应用智能文档管理系统smartdoc(1)里,我们已经搭好了基础框架,并具体实现了以下几个功能性页面(见标黄部分)。在第2部分教程里,我们讲解了不同用户的权限控制。本文将详细讲解开发最后一个功能性页面。
-
产品列表,产品详情,产品创建和产品修改 - 4个页面
-
类别列表,类别详情,类别创建和类别修改 - 4个页面
-
文档列表,文档详情,文档创建和文件修改 - 4个页面
-
文档一般搜索和Ajax搜索 - 1个页面
项目需求
对于任何IT项目开发,能快速准确描述项目需求是一项技能。本教程中smartdoc对于文档搜索的需求如下, 我们稍后来看看如何实现。
-
用户可以根据标题,产品名字和代码来搜索相关文档
-
文档列表或其它页面上带有搜索框(见图1),用户输入关键词并按提交后,跳转到文档搜索页面,显示结果。
-
在文档搜索页面,用户输入关键词(不用按提交按钮), 实时显示搜索结果 - Ajax搜索(见图2)。
实时文档搜索页面
urls.py
我们需要设计两个urls, 一个负责接收用户输入的关键词q,在前端返回搜索结果。一个负责在后台接收实时变化的关键词q,并给前端提供json格式数据。
urlpatterns = [ # 文档搜索 path('document/search/', views.document_search, name='document_search'), # Ajax返回json数据 path('ajax/search/', views.doc_ajax_search, name='doc_ajax_search'), ]
views.py
我们需要编写两个视图