2015-04-07 62 views
4

我一直在尋找一個解決方案,現在我無法圍繞這一點來解決問題。我所要做的就是在同一頁面和主頁上登錄allauth登錄和註冊表單,而不是在/ accounts url下。有沒有人有這方面的經驗,或有一個解決方案,他們可以分享或指向正確的方向?任何幫助,將不勝感激。主頁上的django allauth登錄和註冊表

回答

6

首先,我們需要使用allauth的註冊視圖

from allauth.accounts.views import SignupView 
from allauth.accounts.forms import LoginForm 


class CustomSignupView(SignupView): 
    # here we add some context to the already existing context 
    def get_context_data(self, **kwargs): 
     # we get context data from original view 
     context = super(CustomSignupView, 
         self).get_context_data(**kwargs) 
     context['login_form'] = LoginForm() # add form to context 
     return context 

驗證錯誤不會在這裏呈現的登錄表單創建自定義視圖,然後我們需要創建一個自定義LoginView,但現在讓我們繼續前進的模板

<button id="toggleForms">Toggle Forms</button> 
<form method='post' action='{% url 'yourviewurl %}' id='signup'> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <input type='submit' value='Sign Up'> 
</form> 

<form method='post' action='{% url 'loginurl' %}' id='login' hidden="hidden"> 
    {% csrf_token %} 
    {{ login_form.as_p }} 
    <input type='submit' value='Log In'> 
</form> 

添加一些JavaScript來切換這些。 這些動作指向不同方向的表單。通常我們會爲此使用formset,但由於All-auth的註冊表單不是Form對象,因此這可能是最快捷的方法。

這些都走在你選擇的任何應用程序的views.py,標籤去django1.8

+0

THX的幫助settings.py中,TEMPLATE_DIRS或顯示目錄列表中定義的模板內,但也許你可以還解釋代碼應該放在哪些文件中?我在這裏找到了類似的方法http://notesbyanerd.com/joint-login-and-signup-django-allauth-view。看起來你的解決方案是一樣的。但由於某種原因,def get_context_data永遠不會被我調用。似乎我可能會混淆一些東西。如果你能再詳述一下你的解決方案,那將會很好。 Thx爲您的時間! – janbrot

+0

視圖在您想要的任何應用程序的views.py中進行,該模板在settings.py中的django 1.8的TEMPLATES_DIRS元組或Dirs列表中定義。 – Mikeec3

+0

Thx現在有很多工作。 – janbrot