我一直在寻找解决方案已经有一段时间了,我无法解决这个问题。我想要完成的只是在同一页面和主页上而不是/ accounts urls下使用allauth登录和注册表单。有没有人有这方面的经验或有他们可以分享的解决方案或指向我正确的方向?任何帮助将不胜感激。
答案 0 :(得分: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中的settings.py,TEMPLATE_DIRS或Dirs列表中定义的模板内
答案 1 :(得分:0)
这些步骤对我有用
1.转到allauth \ account \ views
在get_context_data
函数下的 loginView类中,将以下代码 signup_form 上下文呈现添加到ret
ret.update({"signup_url": signup_url,
"site": site,
"redirect_field_name": self.redirect_field_name,
"redirect_field_value": redirect_field_value,
-->"signup_form":get_form_class(app_settings.FORMS, 'signup',SignupForm)<--
})return ret
在您的应用中显示。py
def homepage(request):
template = 'account/login.html'
context ={}
return render(request, template, context)
您的urls.py
from .views import homepage
path('', homepage, name='home'),
在您的帐户/login.html
{% include "account/signup.html" with form=signup_form %}
有关示例代码,请参见https://github.com/believeohiozua/django-allauth/blob/master/allauth/account/views.py
如果您对上述存储库没问题,则可以使用
安装
pip install git+https://github.com/believeohiozua/django-allauth.git