Allauth влизането на началната страница не работи

За да позволя на allauth на Django да работи на моята начална страница, копирах allauth HTML за формулярите за влизане и регистрация в моя собствен base.html (формулярът за влизане може да се види тук).

Така че това успешно изобразява формуляра и неговите полета на началната ми страница. Въпреки това, когато щракна върху изпращане във формуляра за вход, той просто ме пренасочва към /accounts/login URL на 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="/bg{% 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- allauth/blob/master/allauth/account/   -  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="/bg{% 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