在遵循您引用的安装和快速入门参考资料时,我也在努力处理 dajaxice 示例。我的错误类似,但我看到“Dajaxice.example 未定义”。
myproj
让我们调用ajax.py 文件所在的主 django 项目和已安装的应用程序myproj/myapp
。似乎让它对我有用的两个部分是:
将 ajax.py 文件包含def sayhello(request)
在正确的目录中,并为 sayhello 函数使用相应的正确路径。
- 将其放在 settings.INSTALLED_APPS 中列出的应用程序之一的目录中
- 如果您安装的应用名称被列为
"myproj",
ajax 文件应该是myproj/ajax.py
,那么 js 引用应该是: Dajaxice.myproj.sayhello(my_js_callback)
- 如果您安装的应用名称被列为
"myproj.subapp",
ajax文件应该是myproj/myapp/ajax.py
,js参考应该是:Dajaxice.myproj.myapp.sayhello(my_js_callback)
[我用这个]
- 记得把 放在
{% dajaxice_js_import %}
模板<head>
部分
注意:在我的示例中,“myapp”可以替换为“example”以匹配 dajaxice 示例代码。
当我通过代码更新时,正确设置 collectstatic 以生成新的 /static/dajaxice/dajaxice.core.js 文件。
- 我完全按照您引用的 dajaxice readthedocs 安装链接中列出的说明进行操作。
- 在 settings.py 文件中添加了 STATIC = '/static/
INSTALLED_APPS
在 settings.py 文件中添加了“django.contrib.staticfiles”
- 跑到
python manage.py collectstatic
将所有文件拉到 /static/ 目录中。这包括生成的文件/static/dajaxice/dajaxice.core.js
- 检查此文件,您应该看到 sayhello 函数的对象层次结构为:
Dajaxice.myproj.sayhello
或Dajaxice.myproj.myapp.sayhello
.
此外,如果您正在尝试来自http://www.dajaxproject.com/multiply/function calculate()
的乘法示例,请将ajax.py
文件的位置更改为:
<script type="text/javascript" charset="utf-8">
function calculate(){
Dajaxice.myproj.myapp.multiply(Dajax.process,{'a':$('#a').val(),'b':$('#b').val()})
};
</script>
或者
<script type="text/javascript" charset="utf-8">
function calculate(){
Dajaxice.myproj.multiply(Dajax.process,{'a':$('#a').val(),'b':$('#b').val()})
};
</script>
并在该部分中包含适当的 dajax js 文件<head>
:
<script src="/static/dajax/jquery.dajax.core.js"></script>
或者
{% static "/static/dajax/jquery.dajax.core.js" %}