To use django forms is to use the django Form class and it's components on 
a view? How will this solve the issue? If i use the components, don't i 
have to re-render the page when a user makes an error on the form?

On Tuesday, October 31, 2017 at 7:50:38 PM UTC-3, James Schneider wrote:
>
>
>
> On Oct 30, 2017 4:46 PM, "fábio andrews rocha marques" <
> [email protected] <javascript:>> wrote:
>
> 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. 
>
>
> There is very little that you can do to prevent this type of behavior when 
> the user presses the back button.
>
> After the user successfully authenticates, they should be redirected to 
> the proper landing page by using an HTTP 302 redirect. This is very common 
> and baked in to all of the generic form handling views provided by Django. 
> If the page is redirected, then the user will encounter a warning pop up 
> from the browser asking if they want to resubmit the data. Generally this 
> is enough to scare users away from using the back button, but even if they 
> do continue through the warning, they'll simply reauthenticate and be 
> redirected to the same landing page, again.
>
> If that is not happening, them your form processing workflow is incorrect.
>
> From your view, you aren't using Django forms at all. I would highly 
> encourage you to do so, especially to better understand how form data 
> should be processed and validated, and how to properly handle responses 
> back to the client. The Django tutorial covers this topic. 
>
> -James
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
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/9875e51c-ede8-4a9b-890a-75da0e8c0183%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to