2014-05-02 147 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路徑(帳戶/),但我真的必須定製它。 –