直接在主页上登录/注册

时间:2014-05-02 11:54:53

标签: django django-allauth

而不是登录页面' ../ account / login /'我想让用户可以直接在主页上登录,例如。我该怎么做才能成功呢?如何使用allauth连接主页上的输入字段?我不知道这是否过于复杂,无法以这种方式运作?

2 个答案:

答案 0 :(得分:1)

有一个适合我的解决方案。它不是最佳解决方案,因为它不是干的,所以如果有人改进它,我将不胜感激!

基本上我所做的是渲染官方allauth登录模板并复制表单的HTML代码。然后我更改了csrf令牌和网址并将其粘贴到主页模板。

以下是登录/注销的示例代码。注册时也可以这样做。 (请注意,我仅使用电子邮件而非用户名登录,您的代码可能因您的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。如果我设法这样做,我会在稍后更新回复。

答案 1 :(得分:0)

如果您真的需要,可以将allauth网址放在不同的路径下。 allauth使用基于名称的URL反转,因此将自动拾取新路径前缀。