2017-01-04 20 views
0

为了让Django的allauth能够在我的主页上工作,我将登录和注册表单的allauth HTML复制到我自己的base.html(登录表单可以看到here)。Allauth在主页上登录不起作用

因此,这成功地呈现在我的主页上的形式和其领域。但是,当我点击提交登录表单时,它只是将我重定向到allauth的/ accounts /登录URL,它呈现相同的表单。只有在此之后才提交表单工作。当我在我的主页上提交注册表单时,它与注册表单一样,它会将我重定向到/ accounts/signup,然后在再次提交后再注册。我怎样才能使我的主页最初登录/注册工作?

我的网址和访问量:

urls.py

urlpatterns = [ 
    url(r'^$', views.boxes_view, name='news'), 
    url(r'^accounts/', include('allauth.urls')), 
] 

views.py

def boxes_view(request): 
    search = request.GET.get('search') 
    posts = Post.objects.all().filter(category=1).order_by('-date') 
    if search: 
     posts = posts.filter(Q(title__icontains=search)|Q(content__icontains=search)) 
    else: 
     posts = Post.objects.all().filter(category=1).order_by('-date') 

    context = {'posts': posts,} 
    return render(request, 'polls.html', context) 

base.html文件

... 

{% load i18n %} 
<form class="login" method="POST" action="{% url 'account_login' %}"> 
<div class="loginWrapper"> 
    <div class="loginNested"> 
    <div class="loginBox"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    {% if redirect_field_value %} 
    <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
    {% endif %} 
    <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a> 
    <button class="primaryAction" type="submit">{% trans "Sign In" %}</button> 
</div> 
</div> 
</div> 
</form> 

... 
+0

显示你的'url'account_login'' –

+0

这是allauth的URL。这里的文档:https://github.com/pennersr/django-allauth/blob/master/allauth/account/urls.py – Zorgan

+0

它会带你到第二个登录页面,即使凭据是正确的? – Hybrid

回答

1

管理人的形式传递的情况下,我认为解决它:

from allauth.account.forms import LoginForm, SignupForm 

    allauth_login = LoginForm(request.POST or None) 
    allauth_signup = SignupForm(request.POST or None) 


    context = { 
     'posts': posts, 
     'allauth_login': allauth_login, 
     'allauth_signup': allauth_signup 
    } 

然后在我的模板替换{{ form.as_p }}{{ allauth_login }}

<form class="login" method="POST" action="{% url 'account_login' %}"> 
<div class="loginWrapper"> 
    <div class="loginNested"> 
    <div class="loginBox"> 
    {% csrf_token %} 
    {{ allauth_login }} 
    {% if redirect_field_value %} 
    <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
    {% endif %} 
    <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a> 
    <button class="primaryAction" type="submit">{% trans "Sign In" %}</button> 
</div> 
</div> 
</div> 
</form> 

此方法仅适用时的凭据正确输入。所以当输入正确时,表单已成功提交并登录/注册。但是,如果登录输入的凭据不正确,或者用户名已被注册等,它将提交表单,并将我重定向到/ accounts/login或/ accounts/signup。这与正常的allauth不同,它在不提交表单的情况下显示错误。如果有人能告诉我如何显示出色的错误,否则我会发布一个单独的问题。