我目前正在尝试覆盖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 %}
答案 0 :(得分:0)
是的,您可以按照自己的方式对其进行自定义。比较简单。
当您使用 {{ 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>
你应该没事了。