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):
And my template for this page(cadastro.html) is like this:
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.?
-- nomeusuario = request.POST['usuario'] #usernamenomesenha = request.POST['senha'] #passwordnomeemail = 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})
<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+unsubscribe@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/3f70cd29-9edc-4272-a27e-534ee7f1e1a2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment