Try using the @never_cache decorator on your login view.
https://docs.djangoproject.com/en/1.11/topics/http/decorators/#django.views.decorators.cache.never_cache


From: django-users@googlegroups.com [mailto:django-users@googlegroups.com] On 
Behalf Of fábio andrews rocha marques
Sent: Tuesday, October 31, 2017 9:15 AM
To: Django users
Subject: Re: do i always have to reload/return render a page to show the 
errors? if i press go back on browser, i see screens with the error message

That's a great suggestion. Sure, it will help on situations where i just want 
the fields to be completed. But there are some fields that require a little 
more feedback than that. Like, if a username already exists... I check if it 
already exists using a View and checking on the database. So, after the View 
checks if the user already exists, i have to render the page again to show the 
error.

On Tuesday, October 31, 2017 at 8:37:05 AM UTC-3, Eric Pascual wrote:
Hello
Sorry or I misunderstood your problem but what about using the required field 
attribute ? It will make such controls and messages be handled directly on the 
client side.
Best regards.

Eric PASCUAL

Centre Scientifique et Technique du Bâtiment
290 route des Lucioles
06560 SOPHIA ANTIPOLIS
http://www.cstb.fr


________________________________________
From: django...@googlegroups.com<javascript:> 
[django...@googlegroups.com<javascript:>] on behalf of fábio andrews rocha 
marques [fabioandrews...@gmail.com<javascript:>]
Sent: Tuesday, October 31, 2017 00:46
To: Django users
Subject: do i always have to reload/return render a page to show the errors? if 
i press go back on browser, i see screens with the error message

Let's say i have a "register a new user" View and on this page, when the user 
forgets to inform a password or a username, i show a message to him on the same 
page saying "you forgot the password". The way i do this is by doing this(on my 
View.py in a function called cadastrarprofessor):

nomeusuario = request.POST['usuario'] #username
nomesenha = request.POST['senha'] #password
nomeemail = request.POST['email'] #email

if not nomeusuario:
return render(request,'cadastro.html',{'cadastrorealizadocomsucesso': False, 
'error_message': "informe um usuário", 'nomeemailcadastro':nomeemail, 
'nomesenhacadastro':nomesenha})
elif not nomesenha:
return render(request,'cadastro.html',{'cadastrorealizadocomsucesso': False, 
'error_message': "informe uma senha", 'nomeemailcadastro':nomeemail, 
'nomeusuariocadastro':nomeusuario})
elif not nomeemail:
return render(request,'cadastro.html',{'cadastrorealizadocomsucesso': False, 
'error_message': "informe um email", 'nomesenhacadastro':nomesenha,

'nomeusuariocadastro':nomeusuario})

And my template for this page(cadastro.html) is like this:
<meta charset="utf-8"/>
<h1>Cadastro</h1>
<form action="{% url 'cadastrarprofessor' %}" method="post">
{% csrf_token %}
<label for="usuario">Usuário: </label>
{% if nomeusuariocadastro %}
<input id="usuario" type="text" name="usuario" value={{ nomeusuariocadastro }}>
{% else %}
<input id="usuario" type="text" name="usuario" value=""/>
{% endif %}


... (DO THE SAME TO SENHA/PASSWORD AND EMAIL)

<input type="submit" value="Cadastrar"/>
</form>
<form action="{% url 'index' %}" method="post">
<input type="submit" value="Voltar"/>
{% csrf_token %}
</form>
{% if cadastrorealizadocomsucesso is True %}<b>cadastro realizado com 
sucesso!</b>{% endif %}
{% if error_message %}<p><strong>{{ error_message }}</p></strong>{% endif %}

So, every time the user forgets to mention a username or email or password in 
this screen, i use render to redirect the user to the same page but this time 
displaying a error_message. Let's say he did forget to fill the textfield with 
a username... he goes back to the same page and sees the error message. After 
that, let's say everything is right and he finally registers a new user, he 
sees "cadastro realizado com sucesso"(sucessfully registered new user) and 
stays on the same page. But when he goes back a page(pressing "back" on the 
browser), instead of going back to the page before the cadastro.html, he goes 
back to the same page cadastro.html but displaying the error message for the 
"you forgot to mention your username". I don't want him to go back to the same 
page with error message, i want to make him go back to my main menu.
Is there a better approach to display error messages on the same page instead 
of using return render like this:
return render(request,'cadastro.html',{'cadastrorealizadocomsucesso': False, 
'error_message': "informe um usuário", 
'nomeemailcadastro':nomeemail,'nomesenhacadastro':nomesenha})
?


--
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
django-users...@googlegroups.com<javascript:><mailto:django-users+unsubscr...@googlegroups.com<javascript:>>.
To post to this group, send email to 
django...@googlegroups.com<javascript:><mailto:django...@googlegroups.com<javascript:>>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/3f70cd29-9edc-4272-a27e-534ee7f1e1a2%40googlegroups.com<https://groups.google.com/d/msgid/django-users/3f70cd29-9edc-4272-a27e-534ee7f1e1a2%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
django-users+unsubscr...@googlegroups.com<mailto:django-users+unsubscr...@googlegroups.com>.
To post to this group, send email to 
django-users@googlegroups.com<mailto:django-users@googlegroups.com>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f73d478e-44ee-40dd-ba61-851f0e0ec5af%40googlegroups.com<https://groups.google.com/d/msgid/django-users/f73d478e-44ee-40dd-ba61-851f0e0ec5af%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/86458c3aecbb49d5be9168ab3e84b542%40ISS1.ISS.LOCAL.
For more options, visit https://groups.google.com/d/optout.

Reply via email to