为什么我的dajax供电加载另一页?

时间:2011-10-09 15:32:34

标签: python ajax django

我正在研究random machine example,但我遇到了麻烦。我根据以下两个页面安装了Dajax和Dajaxice:DajaxDajaxice。我的ajax.py文件如下所示:

import random
from dajax.core import Dajax
from dajaxice.decorators import dajaxice_register

@dajaxice_register
def randomize(request):
    dajax = Dajax()
    dajax.assign('#result','value',random.randint(1, 10))
    return dajax.json()

这是我的views.py:

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

def dajax(request):
     return render_to_response( 'dajax.html', context_instance=RequestContext(request) )

这是我的urls.py:

from django.conf.urls.defaults import patterns, include, url
from dajaxice.core import dajaxice_autodiscover
from dajaxice import urls
from django.conf import settings
from Dajax.myapp.views import dajax
dajaxice_autodiscover()

urlpatterns = patterns('',
    (r'^%s/' % (settings.DAJAXICE_MEDIA_PREFIX), include('dajaxice.urls')),
    (r'^dajax/$', dajax),
)

我的html表单标签如下所示:

<form>
        <input type="text" name="result" value="" id="result">
        <input type="button" name="rand" value="Let's Rand!" id="rand" onclick="Dajaxice.myapp.randomize(Dajax.process); return false;">
</form>

这是我的头标记的样子:

<head>
    <title>My base template</title>
    {% dajaxice_js_import %}
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="{{ STATIC_URL }}js/jquery.dajax.core.js" type="text/javascript" charset="UTF-8"></script>
</head>

我在项目目录中的 init .py文件中添加了以下内容:

from myapp.ajax import randomize

另外值得注意的是,我的Django应用程序的名称是myapp。

在我的页面上,当我点击Let's Rand!时,页面转到http://localhost:8000/dajax/?result=2,文本输入框中没有显示任何值。我在Chromium中检查了控制台,没有任何错误。

我是否错误地安装了Dajax或Dajaxice,或者上面的代码是否有问题?

我的猜测是,因为我使用的是jQuery而不是Prototype,所以我需要做一些不同的事情。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

在调用Dajax之后,您的return false;处理程序中需要onClick

答案 1 :(得分:1)

您需要确保您尝试导入ajak.py文件的应用位于INSTALLED_APPS中的settings.py

请参阅自动发现的来源:

http://docs.dajaxproject.com/dajaxice/_modules/dajaxice/core/Dajaxice.html

答案 2 :(得分:1)

将此内容放入views.py:

from dajaxice.core import dajaxice_autodiscover
dajaxice_autodiscover()