Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ajax获取模板块内容和调用_Ajax_Django - Fatal编程技术网

从ajax获取模板块内容和调用

从ajax获取模板块内容和调用,ajax,django,Ajax,Django,我正在使用django 1.9和python 3。我的英语也不是最好的,所以请原谅这个问题,如果它是坏的 我正在努力使我的网站成为一个单页应用程序。我需要获取给定模板的{%block%}内容,然后将其作为HttpResponse发送,以便ajax能够获取它并将其注入页面 我试着使用这个问题的答案: 但在我看来,当试图获取块的内容时,如下所示: response_data[content] = get_block_source('profile/login.html', 'content')

我正在使用django 1.9和python 3。我的英语也不是最好的,所以请原谅这个问题,如果它是坏的

我正在努力使我的网站成为一个单页应用程序。我需要获取给定模板的
{%block%}
内容,然后将其作为HttpResponse发送,以便ajax能够获取它并将其注入页面

我试着使用这个问题的答案:

但在我看来,当试图获取块的内容时,如下所示:

response_data[content] = get_block_source('profile/login.html', 'content')
        
        if request.is_ajax():
            return HttpResponse(
                json.dumps(response_data),
                content_type="application/json"
            )
我只是从django那里得到这个错误,不管我做什么:

找不到/login/模板块内容处的值错误

块的内容甚至不能用于ajax调用,这会带来什么

编辑: 我将在此处包含我的“内容”块:

在我的模板中:

{% extends 'base.html' %}
{% block content %}
<div class="big-title text">Log in</div>
<div class="form-container">
    <form name="login-form" id="user" method="post" action="/login/" enctype="multipart/form-data" class="text">
        {% csrf_token %}
        <div class="title">Enter your credentials</div>
        <div class="form-row">
            <div class="form-flex">
                <div class="field-container">
                    <div class="field-input-container">
                        <div class="field-label accent">Username</div>
                        <div class="field-input">
                            <input class="field-input-element" type="text" name="username" />
                        </div>
                    </div>
                    <div class="field-help">Your username is always lowercase.</div>
                </div>
            </div>
            <div class="form-flex">
                <div class="field-container" style="height: 110px">
                    <div class="field-input-container">
                        <div class="field-label accent">Password</div>
                        <div class="field-input">
                            <input class="field-input-element" type="password" name="password" />
                        </div>
                    </div>
                    <div class="field-help"></div>
                </div>
            </div>
        </div>
        <div class="form-button-container">
    <div class="form-error"></div>
    <div class="form-message"></div>
    <input type="submit" name="submit" value="Accept" class="button form-button"/>
    </div>
    </form>
</div>
{% endblock %}
{%extends'base.html%}
{%block content%}
登录
{%csrf_令牌%}
输入您的凭据
用户名
您的用户名始终为小写。
密码
{%endblock%}
在my base(base.html)中


应用程序名称
{%if user.u经过身份验证%}
{%if request.user.is_superuser%}
{%endif%}
{%else%}
{%endif%}
{%block content%}{%endblock%}

模板源是模板的实际HTML,而不是文件引用

模板源是模板的实际HTML,而不是文件引用

您是否在模板中定义了一个名为content的块,其中包含{%block content%}?当然。在my base.html和我试图从中获取的模板中。您是否在模板中使用{%block content%}定义了一个名为content的块?当然。在我的base.html和我试图从中获取的模板中。啊,我明白了。我不会将整个html粘贴到函数中,但是,处理这个问题的最有效方法是什么?尝试在这里保持干燥。只将您需要的元素拆分为另一个html,将此代码传递给函数,并在模板中使用include。如果html是动态的(即基于模型的变量),则有解决方案,如呈现这些部分模板,然后传递呈现的代码。但是要小心,否则你将进入构建另一个框架的兔子洞。django也面临同样的问题:块、模板、动态模板等等。我明白了,我真的只想让我的应用程序成为一个页面,所以我想这对django来说不会太难。如果没有更简单的方法,我必须先查找如何渲染部分,然后传递代码,也许?我的目标是,因为这个网站是基于音频的,所以当你导航时,必须有一种方式让音频不停止播放。啊,我明白了。我不会将整个html粘贴到函数中,但是,处理这个问题的最有效方法是什么?尝试在这里保持干燥。只将您需要的元素拆分为另一个html,将此代码传递给函数,并在模板中使用include。如果html是动态的(即基于模型的变量),则有解决方案,如呈现这些部分模板,然后传递呈现的代码。但是要小心,否则你将进入构建另一个框架的兔子洞。django也面临同样的问题:块、模板、动态模板等等。我明白了,我真的只想让我的应用程序成为一个页面,所以我想这对django来说不会太难。如果没有更简单的方法,我必须先查找如何渲染部分,然后传递代码,也许?我的目标是,因为这个网站是基于音频的,必须有一种方式,让音频不停止播放,当你导航。
<body>
    <div id="modal-container">
        <div id="modal-overlay">
            <div id="modal-items">
            </div>
        </div>
    </div>
    <div id="wrapper">
        <header>
            <div id="header-title" class="text accent">App name</div>
            <div id="header-nav">
                <nav>
                    {% if user.is_authenticated %}
                    <a href="/" class="text accent">Home</a>
                    <a href="/feed" class="text accent">Feed</a> {% if request.user.is_superuser %}
                    <a href="/admin" class="text accent">Admin</a> {% endif %}
                    <a href="" class="text">N</a>
                    <a href="/{{ request.user }}" class="header-avatar-small-a">
                        <div class="text header-greeting">Hi, {{ user.userprofile.display_name }}</div>
                        <div class="header-avatar-small">
                            {% if not user.userprofile.avatar == '' %}
                            <img src="{{ MEDIA_URL }}users/{{ user }}/avatar" alt=""> {% else %}
                            <img src="{{ MEDIA_URL }}users/avatar" alt=""> {% endif %}
                        </div>
                    </a>
                    {% else %}
                    <a href="/login" class="text accent">Log in</a>
                    <a href="/register" class="text accent">Create account</a> {% endif %}
                </nav>
            </div>
            <div class="progress">
                <div id="header-progress" class="fill"></div>
            </div>
        </header>
        <main>
            {% block content %} {% endblock %}
        </main>
        <footer></footer>
    </div>
</body>
</html>