Django allauth使用自定义模板覆盖默认模板

时间:2019-03-11 03:28:26

标签: django django-templates django-allauth

我目前正在尝试覆盖Django allauth模板。到目前为止,我遵循了与我类似的所有问题的所有建议:

overriding default templates of django-allauth

How to override template in django-allauth?

但是,我的目标是仅更改默认的Django allauth,而不创建新的视图或表单。 (在以前的项目中,我曾经使用Django Crispy Forms的帮助程序覆盖默认的Forms构造函数类,在这种情况下是无法实现的。)

我相信,有一种方法可以忽略{{form}}变量,而只是从头开始定义一个工作表单。当前,当我导航到“ account_login”时,我的模板已成功显示。但是,当我按“登录”时,什么也没发生。

这是我的myapp/templates/account/login.html文件:

{% extends 'base.html' %}
{% load staticfiles %}

{% block title %}
Sign In to {{ SITE_NAME }}
{% endblock %}

{% block body %}  
<div class="centered">  
  <img class="logo" src={% static 'imgs/logo.png' %} alt="" width="100" height="100">
  <form id="login_form" class="form-signin" method="post" action="{% url 'account_login'%}">
  {% csrf_token %}
    <label for="inputLogin" class="sr-only">Email address or Username</label>
    <input type="text" id="login" class="form-control" placeholder="Email or Username" required autofocus>
    <label for="inputPassword" class="sr-only">Password</label>
    <input type="password" id="password" class="form-control" placeholder="Password" required>
    <div class="note mb-3">
      <label>
        <input type="checkbox" value="remember" id="remember"> Remember me
      </label>
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
    <div class="note mb-3 text-center">
      <p>Forgot? <a href="#">Retrieve your login.</a></p>
      <p>Not registered? <a href={% url 'account_signup'%}>Sign Up!</a></p>
    </div>       
  </form>
</div>
{% endblock %}  

1 个答案:

答案 0 :(得分:0)

是的,您可以按照自己的方式对其进行自定义。比较简单。

当您使用 {{ form.as_p }} 时,页面会呈现表单。如果您检查表单,您会注意到页面呈现以下表单:

enter image description here

注意 id=""name="" 必须完全相同。

这样你的代码应该是这样的:

<form id="login_form" class="form-signin" method="post" action="{% url 'account_login'%}">
  {% csrf_token %}
    <label for="inputLogin" class="sr-only">Email address or Username</label>
    <input type="text" name="login" id="id_login" class="form-control" placeholder="Email or Username" required autofocus>
    <label for="inputPassword" class="sr-only">Password</label>
    <input type="password" name="password" id="id_password" class="form-control" placeholder="Password" required>
    <div class="note mb-3">
      <label>
        <input type="checkbox" name="remember" value="remember" id="id_remember"> Remember me
      </label>
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
    <div class="note mb-3 text-center">
      <p>Forgot? <a href="#">Retrieve your login.</a></p>
      <p>Not registered? <a href={% url 'account_signup'%}>Sign Up!</a></p>
    </div>       
  </form>

你应该没事了。