如何将搜索的部分结果返回到网格?

2024-05-13 23:57:18 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我使用的系统(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)的新版本。这是正确的方法吗?有人能帮忙吗


Tags: nonamemodjsonurlfieldsearchrequest