English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
myapp/forms.py
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 #-*- coding: utf-8 -*- from django import forms class LoginForm(forms.Form): user = forms.CharField(max_length = 100) password = forms.CharField(widget = forms.PasswordInput())
Como pode ser visto acima, o tipo de campo pode usar o parâmetro 'widget' para renderizar em HTML; Nossa instância, ocultamos a senha, não mostramos. Nossa instância, queremos ocultar a senha sem mostrar. O entrada de data é DateInput, CheckboxInput é a caixa de seleção etc.
Usar formulários nas vistas
Existem dois tipos de solicitações HTTP, GET e POST. No Django, como parâmetro passado para o objeto da solicitação da vista, há uma propriedade chamada "método", onde o tipo da solicitação é configurado e todos os dados passados por POST podem ser acessados através do dicionário request.POST.
Vamos em "myapp/views.py criar uma vista de login -
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 #-*- coding: utf-8 -*- from myapp.forms import LoginForm def login(request): username = "not logged in" if request.method == "POST": #Get the posted form MyLoginForm = LoginForm(request.POST) if MyLoginForm.is_valid(): username = MyLoginForm.cleaned_data['username'] else: MyLoginForm = Loginform() return render(request, 'loggedin.html', {"username" : username})
Esta vista exibirá o resultado do formulário de login em "loggedin.html". Para testá-la, precisamos primeiro do template do formulário de login. Vamos chamá-lo de: login.html。
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 <html> <body> <form name="form" action="{% url "myapp.views.login" %}" method="POST">{% csrf_token %} <div style="max-width:470px;"> <center> <input type="text" style="margin-left: 0%; margin20%;" placeholder="Identifiant" name="username" /> </center> </div> <br> <div style="max-width:470px;"> <center> <input type="password" style="margin-left: 0%; margin20%;" placeholder="password" name="password" /> </center> </div> <br> <div style="max-width:470px;"> <center> <button style="border:0px; background-color:#4285F4color:#-F8top: ; margin %;35height:8px; width:-left: 0%; margin19; type = "submit" value = "Login" > <strong>Login</strong> </button> </center> </div> </form> </body> </html>
O template exibirá um formulário de login e publicará o resultado que vimos acima no login. Você pode ter notado que o template, isso é apenas para evitar ataques de falsificação de solicitações cruzadas (CSRF) em seu site.
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 {% csrf_token %}
Depois de ter o template de login, precisamos processar o formulário e exibir o template loggedin.html.
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 <html> <body> Você está: <strong>{{username}}</strong> </body> </html>
Agora, precisamos apenas das URLs para começar: myapp/urls.py
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 from django.conf.urls import patterns, url from django.views.generic import TemplateView urlpatterns = patterns('myapp.views', url(r'^connection/', TemplateView.as_view(template_name = 'login.html')), url(r'^login/', 'login', name = 'login'))
ao acessar "/myapp/"conexão", obteremos o template login.html exibido da seguinte forma -
Após o envio do formulário acima, o formato é válido. Em nosso exemplo, certifique-se de preencher dois campos, e obteremos o seguinte resultado -
Se seu nome de usuário for polo e se você esquecer a senha, receberá a seguinte mensagem -
usando nossa própria validação de formulário
No exemplo acima, validamos o formulário -
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 MyLoginForm.is_valid()
Usamos apenas o motor de validação de formulários do Django, garantindo apenas que este campo é obrigatório na instância. Agora vamos tentar garantir que o usuário que tenta fazer login exista em nosso banco de dados como item Dreamreal. Para isso, alterar myapp/forms.py é -
# Nome do Arquivo : example.py # Copyright: 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 #-*- coding: utf-8 -*- from django import forms from myapp.models import Dreamreal class LoginForm(forms.Form): user = forms.CharField(max_length = 100) password = forms.CharField(widget = forms.PasswordInput()) def clean_message(self): username = self.cleaned_data.get("username") dbuser = Dreamreal.objects.filter(name = username) if not dbuser: raise forms.ValidationError("O usuário não existe em nosso db!") return username
Agora, após a chamada do método 'is_valid', obteremos a saída correta, apenas quando o usuário estiver em nosso banco de dados. Se quiser consultar os campos do formulário, é necessário adicionar um método começando com 'clean_' e o nome do campo correspondente ao campo da classe do formulário. É importante levantar um erro forms.ValidationError.