Ich versuche, eine Erfolgsmeldung nach der Anmeldung mit dem django Message-Framework zu setzen, aber die Nachricht wird nie angezeigt! Ich weiß, viele Leute vor der gleichen Frage gefragt, und ihre Nachricht wird nicht wegen ihrer Einstellungen angezeigt. Ich habe meine Einstellungen überprüft, viele Dinge scheinen gut, aber es funktioniert immer noch nicht. Wer weiß warum? vielleicht ist mein Render nicht gut?Django Nachricht funktioniert nicht
meine Einstellungen:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
...
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [#other dir, os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
meine Sicht:
def connexion(request):
error = False
if request.method == "POST":
form = loginForm(request.POST)
if form.is_valid():
email = form.cleaned_data["email"]
mdp = form.cleaned_data["mdp"]
user = authenticate(email=email, password=mdp)
if user:
login(request, user)
messages.success(request, 'Form submission successful')
else:
error = True
else:
form = loginForm()
return render(request, 'login.html', locals())
meine Vorlage login.html:
<form id="loginform" name="loginform" method="POST" action="/welcome">
{% csrf_token %}
{{ form.as_p }}
<button>Valider</button>
auch wenn der Benutzer die Form, die er zu einer anderen Vorlagen geht einreichen : welcome.html (hier wo ich die Nachricht anzeigen möchte)
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
(Beachten Sie, dass ich bereits den Code oben in login.html zu kopieren versucht, aber es funktioniert auch nicht.)
die welcome.html Ansicht:
def welcome(request):
#messages.success(request, 'Form submission successful') I tried this too
#messages.add_message(request, messages.INFO, 'Hello world.')
return render_to_response('welcome.html')
Am mit Python 3.5, Django 1.10.4
es Ihnen danken! diese Arbeit ! aber ich habe jetzt mehrere nachrichten haha ist das wegen der schleife? – blabla
Vermutlich liegt es an all den fehlgeschlagenen Versuchen. Jetzt haben Sie sie angezeigt, sie werden gelöscht. –
@DanielRoseman Können Sie erläutern, warum es nicht mit render_to_response funktioniert, Kontext anfordern? –