【问题标题】:Django allauth override default template with custom templateDjango allauth 使用自定义模板覆盖默认模板
【发布时间】:2019-08-01 08:29:39
【问题描述】:

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

overriding default templates of django-allauth

How to override template in django-allauth?

但是,我的目标只是更改默认的 Django allauth,而不创建新的视图或表单。 (在以前的项目中,我曾经使用 Django Crispy 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 %}  

【问题讨论】:

    标签: django django-templates django-allauth


    【解决方案1】:

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

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

    请注意 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>

    你应该很高兴。

    【讨论】:

      猜你喜欢
      • 2012-03-15
      • 2016-06-04
      • 1970-01-01
      • 2014-08-30
      • 2019-07-11
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2018-06-21
      相关资源
      最近更新 更多