2012-03-15 10 views
0

私はAJX呼び出しに対する応答用のテーブルだけをレンダリングしようとしていますが、テンプレート全体をレンダリングしています。 render_to_responseの使用中にテーブルをレンダリングするにはどうすればよいですか?Django JqueryとAJAXを使用しているときの簡単な問題

テンプレート:

<html> 
    <head> 
     <title> Hash Searcher </title> 
     <script type="text/javascript" src="{{STATIC_URL}}jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#searchSubmit').click(function() { 
        q = $('#q').val(); 
        $('#results').html('&nbsp;').load('/?mdhash=' + q); 

       }); 
      }); 
      $(document).ajaxStart(function() { 
       $('#spinner').show(); 
      }).ajaxStop(function() { 
       $('#spinner').hide(); 
      }); 
     </script> 
    </head> 
    <body style="text-align: center; "> 
     <input id="q" type="text" name="mdhash" value="{{ mdhash }}" style="text-align: center; "size=60 /> 
     <br> 
     <input id="searchSubmit" type="submit" value="Search" /> 
     <br> 
     <div style="display:none" id="spinner"><img src="{{STATIC_URL}}spinner.gif"/></div> 
     <br> 
     <span id="results"> 
     {% if plain %} 
     <table> 
      <tbody> 
       <tr> 
        <td><small>#</small></td> 
        <td><small>Hash</small><br></td> 
        <td><small>Clear</small><br></td> 
        <td><small>Type</small><br></td> 
        <td><small>DB</small><br></td> 
       </tr> 
       {% for hash, clear in plain.items %} 
       <tr> 
        <td><small>{{ forloop.counter }}</small></td> 
        <td><small>{{ hash }}</small><br></td> 
        <td><small><strong>{{ clear.0 }}</strong></small><br></td> 
        <td><small>{{ clear.1 }}</small><br></td> 
        <td><small>{{ clear.2 }}</small><br></td> 
       </tr> 
       {% endfor %} 
      </tbody> 
     </table> 
     {% endif %} 
     </span> 
    </body> 
</html> 

ビュー:

from django.shortcuts import render_to_response 
from django.http import HttpResponse 
from django.template.context import RequestContext 
import core.models, time 

def search(request): 
    req = request.GET.get('mdhash', '') 
    plain = {} 
    try: 
     plain[req] = (core.models.Hash_md5.objects.get(hash=req).plain, 'md5', 'iCrack') 
    except: 
     pass 
    #aif request.is_ajax(): 
    # time.sleep(5) 
    # return HttpResponse({plain: 'plain'}) 
    #else: 
    return render_to_response('index.html', locals(), context_instance = RequestContext(request)) 

答えて

1

あなたはアウトテンプレートの<table>一部を考慮する(と{% include ... %}を使用して、ページテンプレートに含める)場合は、あなただけのことをレンダリングすることができますサブテンプレートif request.is_ajax()とすると、jQuery経由でページのその部分だけを置き換えることができます。

+0

ありがとうございました。 –

関連する問題