django + ajax:需要针对“假人”的小介绍

时间:2010-03-05 18:40:45

标签: ajax django

我试图了解ajax如何与django一起使用多次,但看起来没有网络上的教程可以帮助我。我宁愿尝试建立一个小样本。所以试图解决以下问题。

1)我有一个非常简单的视图函数,它在调用时返回随机数,例如

def homepage(request):
    id = randint(1, 6)
    return render_to_response("home.html", 
                              {"id" : id},
                              context_instance = RequestContext(request))

2)我有非常原始的模板,因此它包含一个数字和按钮,可以在点击时触发JS代码。

{% extends "index.html" %}

{% block head %}

<script type="text/javascript">
  <!--
      function clickNewButton()
      {
      window.open("/");
      }
      -->
</script>

{% endblock %}

{% block content %}
  <div id="meta">
    <form name="smallForm">
      <p>
         {{ id }}
      </p>
        <input type="button" value="New" onClick="clickNewButton()"/>
    </form>
  </div>

</div>

{% endblock %}

基本上问题是......在我的案例中,如何仅重新加载包含数字

{{id}}

的页面部分。


如果我需要通过点击重新加载其他元素(例如图片)会有什么不同?


很抱歉,问题只是愚蠢。不知道从哪里开始...... :(


另外,我如何更改页面中不可见的部分?例如一个swfobject实例的flashvars,以防我动态重新加载flash应用程序,以获得新的参数?

3 个答案:

答案 0 :(得分:2)

您可以创建一个仅返回id

的视图
def id(request):
    return HttpResonse(randint(1, 6))

用AJAX加载它。例如,使用jQuery:

$('#clickme').click(function(){ $('#randomnumber').load('/api/random.txt'); });

但是如果您需要更大的东西,请使用Piston(http://bitbucket.org/jespern/django-piston/)创建一个完整的API并使用它。最好先学习jQuery;)

答案 1 :(得分:1)

我将重复我对这个问题的标准答案:使用jQuery Taconite Plugin。它易于设置,可以跨浏览器无缝工作,并且可以让您对整个页面进行出色的控制。这是一个昙花一现的解决方案,你要做的只是发送请求。所有的AJAXiness都是为您处理的,所有更改都会自动应用。你可以使用这个插件触发你用jQuery做的任何事情,包括导致一大块Javascript的eval()(当然,这可以你喜欢的任何)。

因为我现在已经给出了这个答案大约6到7次,所以我终于崩溃并创建了一个带有my Taconite class and a simple usage example的可下载文件。如果您对此有疑问和/或问题,请告诉我。

答案 2 :(得分:0)

以下是使用Dajax django扩展程序非常适合您的问题的示例:

http://www.dajaxproject.com/random/

  

Dajax是一种可轻松快速开发的强大工具   Web应用程序中的异步表示逻辑,使用Python和   几乎没有JavaScript源代码。   使用Dajax,您可以直接从Python修改DOM结构。

使用它真的很容易。