2

我在 django 中创建了一个 Web 应用程序,对此我很陌生。我想要做的是用户点击打开一个模式窗口(基本上只是一个绝对定位的 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 新手,所以请慢慢来。

4

2 回答 2

1

您似乎正在使用Dajax 框架。看看那里的例子。其中一些示例可能已过时,因此请查看此站点。如果您安装了 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()
于 2012-07-26T15:20:19.530 回答
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 的帮助。

于 2012-07-30T12:55:00.753 回答