2014-05-02 4 views
5

Anstatt sich auf der Seite '../account/login/' anzumelden, möchte ich Benutzern die Möglichkeit geben, sich direkt auf der Startseite einzuloggen. Was soll ich tun, um es zu ermöglichen? Wie verbinde ich Eingabefelder auf der Startseite mit allauth? Ich weiß nicht, ob das zu kompliziert ist, um es so zu machen?Einloggen/Registrieren direkt auf der Homepage

Antwort

2

Es gibt eine Lösung, die für mich funktioniert. Es ist nicht die optimale Lösung, weil es nicht DRY ist, also wäre ich dankbar, wenn jemand es verbessert!

Im Grunde genommen habe ich die offizielle Allauth-Anmeldevorlage gerendert und den HTML-Code des Formulars kopiert. Dann habe ich das csrf-Token und die URLs geändert und in die Homepage-Vorlage eingefügt.

Hier ist der Beispielcode für das Anmelden/Abmelden. Sie können das gleiche mit der Anmeldung tun. (Beachten Sie, dass ich nur die E-Mail-Adresse und nicht den Benutzernamen für die Anmeldung verwende. Ihr Code könnte sich je nach Ihren Einstellungen unterscheiden. Sehen Sie sich Ihre Login- und Anmeldevorlagen an, um zu sehen, welche Eingabefelder Sie benötigen.

{% load account %} 

<h1>Login/Logout</h1> 

{% if user.is_authenticated %} 
    <p>Loged in with e-mail: {{ request.user.email }}</p> 
    <a href="{% url "account_logout" %}">Logout</a> 
{% else %} 
    <form action="{% url "account_login" %}" method="post"> 
     {% csrf_token %} 
     <input type="email" placeholder="E-mail" name="login"> 
     <input type="password" placeholder="Password" name="password"> 
     <label for="id_remember_menu" class="text-primary">Remember Me:</label> 
     <input id="id_remember_menu" name="remember" type="checkbox"> 
     {% if redirect_field_value %} 
      <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
     {% endif %} 
     <button type="submit">Login</button> 
     <a href="{% url 'account_reset_password' %}">Forgot Password?</a> 
    </form> 
{% endif %} 

Ich mag würde, den Code zu verbessern und in der Lage das Formular direkt in der Homepage-Vorlage mit {{ form }} statt Kopieren des HTML zu rendern. Wenn ich es schaffe, werde ich die Antwort später aktualisieren.

+0

Hat es für Sie funktioniert? Wenn ja, bitte vergessen Sie nicht, die Antwort zu aktualisieren und zu akzeptieren! Danke – ferrangb

+0

Das ist der richtige Weg, danke! –

+0

@ferrangb Haben Sie eine Möglichkeit gefunden, {{form}} direkt zu verwenden, anstatt die HTML-Codes zu kopieren? – Joey

0

Wenn Sie wirklich müssen, können Sie alle URL-URLs unter einen anderen Pfad setzen. allauth verwendet eine namensbasierte URL-Umkehrung, so dass das neue Pfadpräfix automatisch übernommen wird.

+0

Leider hilft das nicht, weil ich Anmeldeformular und Anmeldeformular auf der gleichen Seite (Homepage zum Beispiel) haben muss. Ich brauche so etwas: http://healthifyme.com/ Die meisten Websites, die allauth verwenden, haben den Standard-URL-Pfad (accounts /), aber ich muss das wirklich anpassen. –

Verwandte Themen