目前,我使用的系统(Python2.7/django 1.6/dojo toolkit)在.pdf文件中具有文本搜索功能。这是一个繁重的搜索,返回的是全部:它只在浏览完所有记录后返回与搜索匹配的所有记录
例:
views.py
def search_document(request):
"""check permission and logic to show the grid """
varis = {
'url2': request.app_root + 'mod/document',
'url': request.app_root + 'mod/search-document-json',
'query': query
}
return render_to_response('mod/search_document_grid.html', RequestContext(request, varis))
def search_document_json(request, query=''):
# Sort
# srt logic (no problem here)
# Pagination
# pagination logic (no problem here)
# Searching for docs in database
# query database logic (no problem here)
documents = Document.objects.filter(QQ).order_by(srt).iterator()
list_docs = []
for doc in documents:
if doc.file.endswith('.pdf'):
# PDFMiner stuff (no problem here)
p = re.compile(query, re.IGNORECASE)
m = p.search(text)
if m:
list_docs.append(doc)
qtr = len(list_docs)
varis = {'lista': lista[ini:fim]}
templ = get_template('mod/search_document.json')
resp = HttpResponse(templ.render(RequestContext(request, varis)), content_type="application/json")
resp['Content-Range'] = rg
return resp
url.py
url(r'^search-document/$', search_document, name='search_document'),
url(r'^search-document-json/(?P<query>.*)$', search_document_json, name='search_document_json'),
搜索\u文档\u grid.html
require([
"dojo/cookie",
"dojo/aspect",
"dojo/store/JsonRest",
"dojo/store/Memory",
"dojo/store/Cache",
"dojox/grid/EnhancedGrid",
"dojox/grid/enhanced/plugins/Cookie",
"dojo/data/ObjectStore",
"dojo/_base/xhr",
"dojo/query",
"dojo/domReady!"
], function(cookie, aspect, JsonRest, Memory, Cache, EnhancedGrid, Cookie, ObjectStore, xhr, query){
var myStore = Cache(JsonRest({target:"{{url}}/{{query|urlencode}}"}), Memory());
var dataStore = new ObjectStore({ objectStore: myStore });
var grid = new dojox.grid.EnhancedGrid({
{% block gridoptions %}
store: dataStore,
rowsPerPage: 100,
keepRows: 200,
structure: {
defaultCell: { cellClasses: "normal" },
cells: [
{% block cells %}
{ name: "Name", field: "name", width: "300px"},
{ name: "Code", field: "code", width: "100px"},
{ name: "Version", field: "version", width: "60px"},
{ name: "Date", field: "date_pub", width: "80px"},
{ name: "Description", field: "description", width: "400px"},
"100px"}
{% endblock cells %}
]
},
{% endblock %}
}, "grid_1");
grid.startup();
当记录匹配时,我想返回网格。应该使用什么逻辑?工具AJAXJquery?WebSocket(*edit2)
编辑: 目前,我找到了一个适合我的查询的文档,我希望该文档在查询仍在运行时进入网格
编辑2: 由于我仍然不知道该做什么,我正在考虑改变整个项目。从我问这个问题的那天起,我仍然在搜索并找到支持异步方法、WebSocket等的Django(3.1)的新版本。这是正确的方法吗?有人能帮忙吗
目前没有回答
相关问题 更多 >
编程相关推荐