我试图了解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应用程序,以获得新的参数?
答案 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结构。
使用它真的很容易。