Вход в Allauth на домашней странице не работает

Чтобы allauth Django работал на моей домашней странице, я скопировал HTML-код allauth для форм входа и регистрации в свой собственный base.html (форму входа можно увидеть здесь).

Итак, это успешно отображает форму и ее поля на моей домашней странице. Однако, когда я нажимаю «Отправить» в форме входа, он просто перенаправляет меня на URL-адрес /accounts/login allauth, который отображает ту же форму. Только после этого отправка формы работает. То же самое и с формой регистрации, когда я отправляю форму регистрации на своей домашней странице, она перенаправляет меня на /accounts/signup, а затем регистрация работает после повторной отправки. Как сделать так, чтобы вход/регистрация работала изначально с моей домашней страницы?

Мои URL и просмотры:

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>

...

person Zorgan    schedule 04.01.2017    source источник
comment
показать свой ` url 'account_login'`   -  person Zagorodniy Olexiy    schedule 05.01.2017
comment
Это URL-адрес allauth. Вот документ: github.com/pennersr/django- аллаут/блоб/мастер/аллаут/аккаунт/   -  person Zorgan    schedule 05.01.2017
comment
выводит ли он вас на вторую страницу входа, даже если учетные данные верны?   -  person Hybrid    schedule 05.01.2017
comment
Да, независимо от того, правильные или неправильные учетные данные, он перенаправляет на /accounts/login   -  person Zorgan    schedule 05.01.2017


Ответы (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, который показывает ошибки без отправки формы. Если бы кто-нибудь мог сказать мне, как показать ошибки, это было бы здорово, в противном случае я отправлю отдельный вопрос.

person Zorgan    schedule 04.01.2017