Django allauth-base.html中包含模板会导致RecursionError

时间:2018-07-06 13:24:46

标签: django templates include django-allauth

我正在使用allauth来处理我的所有身份验证。使用该应用程序,每个身份验证功能都将获得自己的模板。但是,我想在所有其他模板中包括注册表。即注册表格位于/ account / login /,/ account / password / change ...等...

我决定通过在所有其他模板中扩展的base.html中包含signup.html来实现这一目标。像这样:

base.html

...
<h4 class="card-title text-center">Register</h4>
{% include "account/signup.html" %}
...

account / base.html

{% extends "base.html" %}

account / signup.html

{% extends "account/base.html" %}

{% load i18n %}

<p>{% blocktrans %}Already have an account? Then please <a href="{{ login_url }}">sign in</a>.{% endblocktrans %}</p>

{% for message in messages %}
    <span style="color:red;">{{ message }}</span>
{% endfor %}

<form class="signup" id="signup_form" method="post" action="{% url 'account_signup' %}">
    {% csrf_token %}
    {% for field in form %}
        <div id="input-group">
            {{ field }}
        </div>
    {% endfor %}
    {% if redirect_field_value %}
        <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
    {% endif %}
    <div class="card-footer text-center">
        <input type="submit" class="btn" value='{% trans "Get started" %}'>
    </div>
</form>

account / login.html

{% extends "account/base.html" %}
{% load static %}
{% load i18n %}
{% load account socialaccount %}

{% get_providers as socialaccount_providers %}

{% block general_notice_modal %}
{% endblock general_notice_modal %}

{% block login-modal %}
...

此代码会导致以下错误,仅当我在 base.html

中添加{%include%}标签时才会发生

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为下面的代码:

{% include "account/signup.html" %}

应位于“ account / base.html”中,而不应位于“ base.html”中。

您有一个错误,因为您的“ base.html”呼叫“ account / signup.html”,而您的“ account / signup.html”呼叫“ account / base.html”,后者称自己为“ base.html”。你有一个循环。