Nach 2 Tagen der Internet-Graben möchte ich zusammenfassen, was ich gefunden habe.
Es gibt nur wenige Möglichkeiten:
1. Verwenden Sie <form action='some address here'>
. Der einfachste Weg.
AllAuth
Formen Um zu prüfen Standard wir brauchen:
# ./manage.py shell
>>> import allauth.account.forms as forms
>>> f = forms.LoginForm()
>>> print(f)
Below Version von print(f)
bearbeitet wird, die direkt
Methode base.html hinzugefügt wird, auf der Lösung basiert aus ->here < -
2. Contex Prozessor
a) Ordner your_project/your_app/context_processor
erstellen. Setzen Sie es 2 Dateien - __init__.py
und login_ctx.py
b) In login_ctx.py
add:
from allauth.account.forms import LoginForm
def login_ctx_tag(request):
return {'loginctx': LoginForm()}
c) In Projekt SETTINGS
hinzufügen your_app.context_processors.login_ctx.login_form_ctx' in
TEMPLATES` Abschnitt. Etwas wie:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
'APP_DIRS': True,
'OPTIONS': {
'debug': DEBUG,
'context_processors': [
'your_app.context_processors.login_ctx.login_form_ctx', # <- put your processor here
'django.template.context_processors.debug',
# [...other processors...]
],
},
},
]
d) In Ihrem *.html
, wo Sie die nächsten müssen hinzufügen:
{% if not user.is_authenticated %}
<form action="{% url 'account_login' %}" method="post">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.get_full_path }}" />
{{ loginctx }}
<button type="submit">Login</button>
</form>
{% else %}
{# display something else here... (username?) #}
{% endif %}
3. Template-Tag
a) Make Ordner your_project/your_app/templatetags
.Setzen Sie es 2 Dateien - __init__.py
und login_tag.py
b) In login_tag.py
add:
from django import template
from allauth.account.forms import LoginForm
register = template.Library()
@register.inclusion_tag('profiles/true_login.html')
def login_form_tag(current_page=None):
return {'loginform': LoginForm(),
'redirect_to': current_page}
c) In your_project/your_app/templates/your_app/
make Datei login_form.html
mit Inhalt:
{% load account %}
{% if not user.is_authenticated %}
<form action="{% url 'account_login' %}" method="post">
{% csrf_token %}
<input type="hidden" name="next" value="{{ redirect_to }}" />
{{ loginform }}
<button type="submit">Login</button>
</form>
{% else %}
{# display something else here... (username?) #}
{% endif %}
d) In jedem *.html
müssen Sie oben hinzufügen {% load login_tag %}
und in der gewünschten Stelle {% login_form_tag request.get_full_path %}
2. und 3. Methoden hinzufügen zeigen nativen AllAuth
Form. Wenn Sie es irgendwie bearbeiten müssen mit {{form}}
, ->here < - im Dokument finden Sie einige Beispiele, wie Sie das tun. erwähnen wollen, dass in dem Dokument, wenn gezeigt so etwas wie:
<div class="fieldWrapper">
{{ form.subject.errors }}
{{ form.subject.label_tag }}
{{ form.subject }}
</div>
für unseren Fall form
muss loginctx
oder loginform
geändert werden Sie können auch Ihre eigene Form schreiben oder erben AllAuth
und importieren zu context processor
oder templatetag
wie oben gezeigt.
Beide Methoden basieren auf ->this solution < -
In allen drei Methoden arbeitet je nach Bedarf umleiten (Rückkehr einen Benutzer zur vorherigen Seite, Umleitung im Falle des Erfolgs Login, sonst original AllAuth
Vorlage bei site.com/account/login
) .
Alle oben beschriebenen können für SignUP implementiert werden.
Auch ich fragte einige Leute, wie man Fehler im Fall von falschem Benutzernamen \ Passwort statt Umleitung zu , ein Vorschlag war, AJAX
zu verwenden, aber das ist derzeit aus meinem Wissen heraus. Einige Basisinformationen über Verbindungsanmeldungsformulare zum Standard AllAuth Ansichten können gefunden werden ->here < -. Wenn irgendjemand es implementieren könnte oder ein Tutorial finden könnte, bitte poste es hier.
Können Sie Ihre Ansicht in den Beitrag aufnehmen? –
@MichaelFourre, es scheint, dass hier ein Problem besteht. Ich fand bei SO (Beispiel - http://stackoverflow.com/questions/29499449/django-allauth-login-signup-form-on-homepage) und im Internet (http://notesbyanerd.com/joint-login-and) -signup-django-allauth-view) einige Ansichten Beispiele, aber ich habe keine Ahnung, wie man sie mit dem Dropdown-Formular verbinden. Ursprüngliche Ansichten sind hier - https://github.com/pennersr/django-allauth/blob/master/allauth/account/views.py – TitanFighter
Aber wo ist deine Ansicht? Verwenden Sie die SignupView als übergeordnete Klasse? –