首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Allauth定制的登录模板不工作

Django Allauth定制的登录模板不工作
EN

Stack Overflow用户
提问于 2021-09-02 11:03:41
回答 2查看 604关注 0票数 0

我已经使用引导样式和widget_tweaks定制了allauth的登录模板。当我尝试使用该模板登录时,它不会将我重定向到主页,而是保持在相同的login.html模板中。但是,当我从/account/login.html/中的allauth登录原始模板时,一切都运行良好,并将我重定向到我的主页。在我的自定义login.html模板中,有一些东西不是我正在定制的。

下面是django-allauth login.html和我的自定义login.html

django-allauth login.html

代码语言:javascript
复制
{% extends "account/base.html" %}

{% load i18n %}
{% load account socialaccount %}

{% block head_title %}{% trans "Sign In" %}{% endblock %}

{% block content %}

<h1>{% trans "Sign In" %}</h1>

{% get_providers as socialaccount_providers %}

{% if socialaccount_providers %}
<p>{% blocktrans with site.name as site_name %}Please sign in with one
of your existing third party accounts. Or, <a href="{{ signup_url }}">sign up</a>
for a {{ site_name }} account and sign in below:{% endblocktrans %}</p>

<div class="socialaccount_ballot">

  <ul class="socialaccount_providers">
    {% include "socialaccount/snippets/provider_list.html" with process="login" %}
  </ul>

  <div class="login-or">{% trans 'or' %}</div>

</div>

{% include "socialaccount/snippets/login_extra.html" %}

{% else %}
<p>{% blocktrans %}If you have not created an account yet, then please
<a href="{{ signup_url }}">sign up</a> first.{% endblocktrans %}</p>
{% endif %}

<form class="login" method="POST" action="{% url 'account_login' %}">
  {% csrf_token %}
  {{ form.as_p }}
  {% if redirect_field_value %}
  <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
  {% endif %}
  <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a>
  <button class="primaryAction" type="submit">{% trans "Sign In" %}</button>
</form>

{% endblock %}

我的定制login.html

代码语言:javascript
复制
{% comment %} 
{% extends "layouts/base-fullscreen.html" %}
{% load i18n %}

{% block title %} Login {% endblock %}
{% load widget_tweaks %}
{% block content %}   

    <div class="auth-wrapper">
        <div class="auth-content">
            <div class="auth-bg">
                <span class="r"></span>
                <span class="r s"></span>
                <span class="r s"></span>
                <span class="r"></span>
            </div>
            <div class="card">
                <div class="card-body text-center">
                    <div class="mb-4">
                        <i class="feather icon-unlock auth-icon"></i>
                    </div>
                    <h3 class="mb-4">Login</h3>

                    <span class="mb-0 text-muted">
                        {% if msg %}
                            {{ msg | safe }}
                        {% else %}
                            Add your credentials
                        {% endif %} 
                    </span>

                    <br />
                    <br />

                    <form method="post" action="{% url 'account_login' %}">

                        {% csrf_token %}                   

                        <div class="md-form mb-2">
                            {% render_field form.login class="form-control" placeholder=form.login.label %}
                        </div>  
                        <span class="text-error">{{ form.login.errors }}</span>

                        <div class="md-form mb-2">
                            {% render_field form.password class="form-control" placeholder=form.password.label %}
                        </div>  
                        <span class="text-error">{{ form.password.errors }}</span>

                        <p class="mb-0 text-muted"><a class="button secondaryAction" href="{% url 'account_reset_password' %}">Forgot password?</a>
                        </p>

                        <div class="form-group text-left">
                            <div class="checkbox checkbox-fill d-inline">
                                <!-- <input type="checkbox" name="checkbox-fill-1" id="checkbox-fill-a1" checked=""> -->
                                {% render_field form.remember class="form-control" placeholder=form.remember.label type="checkbox"%}
                                <label for="id_remember" class="cr"> Remember me</label>
                            </div>
                        </div>
                        {% if redirect_field_value %}
                        <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
                        {% endif %}
                        <button type="submit" name="login" class="btn btn-primary shadow-2 mb-4">Login</button>

                    </form>

                    <p class="mb-0 text-muted">Don’t have an account? <a href="{% url 'account_signup' %}" >Signup</a></p>
                    <br />
                </div>
            </div>
        </div>
    </div>

{% endblock content %}

在settings.py中的设置

代码语言:javascript
复制
LOGIN_REDIRECT_URL = '/'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 
SITE_ID = 1

ACCOUNT_LOGOUT_REDIRECT_URL = '/'   #couterpart to Django's LOGIN_REDIRECT_URL
ACCOUNT_LOGOUT_REDIRECT = '/'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'optional'

我所做的另一个改变是自定义allauth表单,以获得额外的两个字段(first_name和last_name)。它可以正常工作并重定向到登录url。

EN

回答 2

Stack Overflow用户

发布于 2021-09-02 19:06:02

您可能会从表单验证器中得到一个错误。将原始表单保存在页面上,以检查其是否出现错误。从原始页面“accounts/login.html”复制{{ form.as_p }}并将其粘贴到自定义模板中。如果有任何错误,它会显示出来。

票数 0
EN

Stack Overflow用户

发布于 2021-12-16 17:28:04

这里是你的问题

{%扩展"account/base.html“%}

如果您的本地base.html中有所有的引导、jquery和base.html,那么这就是您需要扩展的地方。django-allauth提供的默认帐户/base.html没有使用引导程序进行定制。

使用:{%扩展"base.html“%}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69029008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档