javascript - How to update Django endless pagination content list with new content with ajax response data -
i trying update page based on user search query. able search results server how update contextlist. have implemented django endless pagination how reload list new content
views.py
import json import traceback django.http import httpresponse django.template import context,loader django.template import requestcontext django.shortcuts import render_to_response escraperinterfaceapp.escraperutils import escraperutils #------------------------------------------------------------------------------ def rendererror(message): """ function displays error message """ t = loader.get_template("error.html") c = context({ 'message':message}) return httpresponse(t.render(c)) def index(request,template = 'index.html', page_template = 'index_page.html' ): """ function handles request index page """ try: context = {} contextlist = [] utilsobj = escraperutils() q = {"size" : 300000, "query" :{ "match_all" : { "boost" : 1.2 }}} results = utilsobj.search(q) in results['hits']['hits']: contextdict = i['_source'] contextdict['image_paths'] = json.loads(contextdict['image_paths']) contextlist.append(contextdict) context.update({'contextlist':contextlist,'page_template': page_template}) if request.is_ajax(): # override template , use 'page' style instead. template = page_template return render_to_response( template, context, context_instance=requestcontext(request) ) except : return rendererror('%s' % (traceback.format_exc())) def search (request,template = 'index.html', page_template = 'index_page.html' ): try: if request.method == 'post': context = {} contextlist = [] keyword = request.post['keyword'] print keyword utilsobj = escraperutils() results = utilsobj.search('productcategory:%(keyword)s or productsubcategory:%(keyword)s or productdesc:%(keyword)s' % {'keyword' : keyword}) in results['hits']['hits']: contextdict = i['_source'] contextdict['image_paths'] = json.loads(contextdict['image_paths']) contextlist.append(contextdict) if request.is_ajax(): # override template , use 'page' style instead. template = page_template context.update({'contextlist':contextlist,'page_template': page_template}) return httpresponse(json.dumps(context), mimetype='application/json') except : return rendererror('%s' % (traceback.format_exc())) #------------------------------------------------------------------------------ index.html :
<html> <head> <title>fashion</title> <link rel="stylesheet" type="text/css" href="static/css/style.css"> </head> <body> <form action=""> {% csrf_token %} <input id="query" type="text" /> <input id="search-submit" type="button" value="search" /> </form> <div class="product_container"> <ul class="product_list"> <div class="endless_page_template"> {% include page_template %} </div> </ul> </div> <div class="product_container"> <ul class="product_list"> <div class="endless_page_template"> {% include page_template %} </div> </ul> </div> {% block js %} <script src="http://code.jquery.com/jquery-latest.js"></script> <script src="static/js/endless_on_scroll.js"></script> <script src="static/js/endless-pagination.js"></script> <script> $.endlesspaginate({paginateonscroll: true, endless_on_scroll_margin : 10, paginateonscrollchunksize: 5 });</script> <script type="text/javascript"> $("#search-submit").click(function() { // query string text field var query = $("#query").val(); alert(query); data = { 'csrfmiddlewaretoken': '{{ csrf_token }}', 'keyword' : query}; // retrieve page server , insert contents // selected document. $.ajax({ type: "post", url: '/search/', data: data, success: function(context){ var items = []; var jsondata = json.parse(json.stringify(context)); console.log(jsondata['contextlist']); $.each(jsondata['contextlist'], function(key, val) { items.push('<li id="' + key + '">' + val + '</li>'); }); $('<ul/>', { 'class': 'product_list', html: items.join('') }).appendto('body'); }, error: function( error ){ alert( error ); }, datatype: 'json', }); }); </script> {% endblock %} </body> </html> index_page.html :
{% load endless %} {% paginate 10 contextlist %} {% item in contextlist %} <li > <a href="{{ item.producturl }}" ><img src="/images/{{ item.image_paths.0 }}/" height="100" width="100" border='1px solid'/></a> <br> <span class="price"> <span class="mrp">mrp : {{ item.productmrp}}</span> {% if item.productprice %}<br> <span class="discounted_price">offer price : {{ item.productprice}}</span> {%endif%} </span> </li> {% endfor %} {% show_more "even more" "working" %} can please tell me how reload contextlist new data....
Comments
Post a Comment