我在django中创建一个web应用程序,我非常新。 我想要做的是在用户点击打开一个模态窗口(基本上只是一个absloute定位div),其中包含一个{%block some_content%}标签。然后,此块应包含登录表单或注册表单(或其他任何内容)。我想使用ajax加载它(这样就没有任何东西都是徒劳的)。
这是我模板的一部分,我希望这些内容出现:
<div id="modal" style="position: absolute; top: 60px; left: 100px; height: 400px; width:700px; background: #777; z-index: 20">
<a href="#" onclick="Dajaxice.my_site.tester1(test_callback, {'user_id': '{{ user.id }}'})"><div class="button">Test</div></a>
<br />
{% block test_content %}{% endblock test_content %}
</div>
这是我的ajax.py
@dajaxice_register
def tester1(request, user_id):
print "test " + user_id
#contenxt = Context({'items': range(2)})
print "1"
return_str = render_block_to_string('my_site/testr.html', 'test_content')
print "7"
return HttpResponse(return_str)
我正在使用代码段http://djangosnippets.org/snippets/942/
在印刷品“#”之后让我相信这一直到
return HttpResponse(return_str)
似乎没有任何事情发生,甚至没有错误信息。
忘了包含我要加载到块的模板:
{% extends "my_site/header.html" %}
{% load url from future %}
{% block test_content %}
<div style="background: red; height: 70%; width:90%">
<span>HEJ!!!</span>
</div>
{% endblock test_content %}
如果有更好的方法我会很高兴知道它,但请记住,我是django的新手所以请慢点。
答案 0 :(得分:1)
您似乎正在使用Dajax framework。看看那里的例子。 其中一些示例可能已过时,请查看this site。 如果您安装了Dajax和Dajaxice,则可以执行类似
的操作<div id="test_content"></div>
<a href = "#" onclick="Dajaxice.<app_name>.ajax_test">load ajax content</a>
你应用中的ajax.py
@dajaxice_register
def ajax_test:
str = 'Hello World'
dajax = Dajax()
dajax.assign('#test_content', 'innerHTML', str)
return dajax.json()
答案 1 :(得分:1)
所以,这是我的解决方案:
我安装了Dajax。它不起作用的原因如下,但这是一个有效的完整解决方案。
HTML:
<input type="button" name="testerbutton" value="Test" id="testerbutton" onclick="Dajaxice.my_site.tester1(Dajax.process);">
<br />
<div name="result" value="" id="result">
ajax.py:
@dajaxice_register
def tester1(request):
dajax = Dajax()
str = render_to_string('my_site/testr.html')
dajax.assign('#result', 'innerHTML', str)
return dajax.json()
testr.html:
<div style="background: red; height: 70%; width:90%">
<span>HEJ!!!</span>
</div>
最重要的部分 - 看起来我只能责怪自己:确保在标题中正确导入jquery.dajax.core.js
。否则Dajax.process
什么都不做。
感谢@pyronic的帮助。