2014-05-02 71 views
5

而不是在页面登录'../account/login/'我想使用户可以直接登录主页例如。我该怎么做才能做到这一点?如何将主页上的输入字段与allauth连接起来?我不知道这是否太复杂,不能以这种方式进行工作?登录/直接在主页上注册

回答

2

有一种解决方案适用于我。这不是最佳解决方案,因为它不是干的,所以我会很感激有人改进它!

基本上我所做的是呈现官方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。如果我设法做到这一点,我会稍后更新回复。

+0

它适合你吗?如果是这样,请不要忘记更新并接受答案!谢谢 – ferrangb

+0

这是正确的做法,谢谢! –

+0

@ferrangb您是否找到了直接使用{{form}}而不是复制HTML代码的方法? – Joey

0

如果您确实需要,可以将allauth URL放在不同的路径下。 allauth使用基于名称的URL反转,所以新的路径前缀将被自动选取。

+0

不幸的是,这并没有帮助,因为我需要在同一页面(例如主页)上具有“登录”表单和“注册”表单。我需要这样的东西:http://healthifyme.com/大多数使用allauth的网站都有默认的URL路径(帐户/),但我真的必须定制它。 –