ajax - 在 Ajax 请求后返回 Django 模型以进行模板渲染

标签 ajax django jquery django-models django-templates

我想为我的网页创建基于 AJAX 的搜索。到目前为止,我能够发送表单数据并对我的 Django 模型进行适当的调用。我遇到的困难只是将查询集发回并使用 Django 模板系统进行渲染。非常感谢您的帮助/建议。

这是我正在使用的代码。

View .py

if request.is_ajax():
    if request.method == 'POST':
        format = 'json'
        mimetype = 'application/json'
        try:
            q = request.POST['obj']
            o = Object.objects.filter(name__icontains=q)
            return render_to_response( 'project_view_objects.html', {'username': request.user.username, 'results':o})

查看.html

<script>
    $(document).ready(function(){

    $("#search_form").submit(function(event)
    {
        event.preventDefault();


        $.ajax({
            type: "POST",
            url: "/objects/search/",
            data: $(this).serialize(),
            processData: false,
            dataType: "json"
            });
    });});
</script>

<article>
    <blockquote>
        <form class="create_form" id="search_form">
            <p>
                <input id="objectSearchNameInput" type="text" name="obj" value="Object name">
                <input type="submit" value="search objects">
            </p>
        </form>
    </blockquote>
</article>
<br />

{% if results %}
<blockquote>
    <aside class="column">
        {% for object in results %}
            <b><a href="#" class="extra-text-special">{{ object.name }}</a></b><br />
        {% endfor %}
    </aside>
    <aside class="column">
        {% for object in results %}
            <font class="extra-text-nospecial">{{ object.created_when }}</font><br />
        {% endfor %}
    </aside>
</blockquote>
{% else %}
    <p>haha</p>
{% endif %}

目前,我在页面上看到的只是“哈哈”。

最佳答案

您缺少的是,在 AJAX 触发时模板已经呈现 - 当然它必须如此,因为模板是服务器端而 javascript 是客户端。

所以要做的事情是让 Ajax View 不返回 JSON,而是返回渲染模板,然后 Javascript 回调将其插入到模板中。

关于ajax - 在 Ajax 请求后返回 Django 模型以进行模板渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627978/

相关文章:

python - 如何在 Django 管理中以表格格式显示添加模型?

javascript - 在图像周围环绕展开的文本

javascript - 淡入/淡出横幅

javascript - 尝试使用 Web Speech API 从 Google 图片获取内容时出现 500 服务器错误

javascript - XmlHttpRequest - 请求的 HTML 文件中的 JavaScript 不会加载

javascript - 无法从 jquery 中的函数返回 ajax responseText

django - 在 django admin 中显示模型的 __unicode__

php - jQuery AJAX 回调 : identify if the return value from the PHP code has a given pattern

Django 'dynamic' 过滤

javascript - Onload 单选选项无法正常工作