【发布时间】:2014-06-19 02:29:14
【问题描述】:
我想让用户直接登录主页而不是登录页面'../account/login/'。我应该怎么做才能使它成为可能?如何将主页上的输入字段与allauth连接起来?我不知道这是否太复杂而无法以这种方式工作?
【问题讨论】:
标签: django django-allauth
我想让用户直接登录主页而不是登录页面'../account/login/'。我应该怎么做才能使它成为可能?如何将主页上的输入字段与allauth连接起来?我不知道这是否太复杂而无法以这种方式工作?
【问题讨论】:
标签: django django-allauth
有一个适合我的解决方案。这不是最佳解决方案,因为它不是 DRY,所以如果有人改进它,我将不胜感激!
基本上我所做的就是渲染官方的allauth登录模板并复制表单的HTML代码。然后我更改了 csrf 令牌和 url 并将其粘贴到主页模板中。
这里是登录/注销的示例代码。您可以通过注册来执行相同的操作。 (请注意,我仅使用电子邮件而不是用户名登录,您的代码可能会根据您的 allauth 设置而有所不同。查看您的登录和注册模板以了解您需要哪些输入字段及其名称。)
{% load account %}
<h1>Login / Logout</h1>
{% if user.is_authenticated %}
<p>Loged in with e-mail: {{ request.user.email }}</p>
<a href="{% url "account_logout" %}">Logout</a>
{% else %}
<form action="{% url "account_login" %}" method="post">
{% csrf_token %}
<input type="email" placeholder="E-mail" name="login">
<input type="password" placeholder="Password" name="password">
<label for="id_remember_menu" class="text-primary">Remember Me:</label>
<input id="id_remember_menu" name="remember" type="checkbox">
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
<button type="submit">Login</button>
<a href="{% url 'account_reset_password' %}">Forgot Password?</a>
</form>
{% endif %}
我想改进代码并能够使用{{ form }}
直接在主页模板中呈现表单,而不是复制 HTML。如果我能做到,我稍后会更新回复。
【讨论】:
context processor
或templatetag
就可以使用{{form}}
。详情在这里 -> *.com/a/39235634/4992248
如果您确实需要,您可以将 allauth URL 放在不同的路径下。 allauth 使用基于名称的 URL 反转,因此新的路径前缀将被自动拾取。
【讨论】: