2014-01-27 4 views
1

Как использовать Ajax в Django-шаблонах?Как использовать Ajax в Django-шаблонах?

urls.py

from django.conf.urls import patterns, url 

urlpatterns = patterns('', 
    url(r'^home/$', 'views.index'),) 

views.py

from django.template import RequestContext 
from django.shortcuts import render_to_response 

def index(request): 

    val = request.POST.get('val', default='text_text') 
    return render_to_response(
      'index.html', 
          {'text': val,}, 
          context_instance=RequestContext(request)) 

index.html

<p>text and pictures</p> 
<p>text and pictures</p> 

<h1>{{ text }}</h1> 

<form action="/home/" method="post"> 
{% csrf_token %} 
<input type="text" name="val" id="val" value="{{ val }}"/> <br/> 
<input type="submit" value="OK" /> 
</form> 

<p>text and pictures</p> 
<p>text and pictures</p> 

Как это можно сделать, когда вы нажимаете кнопку OK обновляет только часть страницы между тегами h1?

+1

[? Что такое лучшая библиотека AJAX для Django] (http://stackoverflow.com/ вопросы/511843/what-is-the-best-ajax-library-for-django) –

+1

вы можете прочитать эту ссылку для простого вызова ajax http://stackoverflow.com/questions/21259988/dj ango-ajax-httpresponse-json-error-неожиданный-токен-д/21260734 # 21260734 –

ответ

2

Так я справляюсь с этим в Flask, но поскольку вы работаете с Django, это будет легко подстроить код.

Сервер: импорт jsonify

@app.route("/_jquerylink") 
def jquerylink(): 
    val = request.POST.get('val', default='text_text') 
    return jsonify(text=val) 

стороне клиента:

<div id="partwithh1"><h1>{{ text }}</h1></div> 

<form action="/home/" method="post"> 
    {% csrf_token %} 
    <input type="text" name="val" id="val" value="{{ val }}"/> <br/> 
    <input type="submit" onclick="getviews(this)" value="OK" /> 
</form> 

    <script type="text/javascript"> 

     $(function getviews() { 

      var content = $(#val).text(); 
      $SCRIPT_ROOT = {{ request.script_root|tojson|safe }}; 
      $.getJSON($SCRIPT_ROOT + '/_jquerylink', 
        {'val':content} 
       , 
       function(data) { 
        $("#partwithh1").html(data.text); 
       }); 
      return false; 
      }); 

    </script> 
+0

Спасибо, я попробую! – Olga

Смежные вопросы