Django – Forms – MySQL – Linux – Python

Publicado: 11 de janeiro de 2015 em Python

Um formulário HTML é uma seção de um documento que tenha elementos especiais chamados controles (caixas de seleção, botões de rádio, menus, etc.) ou seja estas tags são responsáveis por criar as entradas de dados em paginas da web. O Django oferece uma gama de ferramentas e bibliotecas para ajudar a construir Forms para aceitar a entrada de dados dos visitantes do site, e em seguida, processar e responder à esta entrada. Os Forms do Django criam automaticamente os formulário HTML à partir de campos únicos a sua escolha ou de um modelo de dados, esta funcionalidade pode poupar muito tempo já que isenta o desenvolvedor de escrever manualmente widgets em uma página.

Django Forms API: https://docs.djangoproject.com/en/1.7/ref/forms/api/

Criando um Form de um Modelo

Para utilizar este walkthrough você deve criar um projeto e uma aplicação Django, configurar o banco de dados MySQL e configurar a aplicação para que seja funcional utilizando um modelo, uma visão e um Template. Você pode consultar como fazer estes procedimentos nos posts anteriores sobre o Django.

1 – Após configurar sua aplicação adequadamente para que rode e exiba uma pagina HTML quando executada, crie um novo arquivo chamado forms.py:

Django - forms.py

Django – forms.py

2 – Utilize os códigos abaixo para criar seus respectivos arquivos, você pode usar a imagem como referencia para analisar a estrutura do seu projeto e de sua aplicação:

Django - Estrutura

Django – Estrutura

3 – Rode sua aplicação e preencha os dados no formulário e clique em enviar:

Django - Forms

Django – Forms

4 – Abra o site Admin para verificar a tabela caso tenha configurado seu arquivo admin.py para o modelo, caso contrario utilize uma ferramenta SQL como o MySQL Workbench para visualizar os dados:

Django - Admin - Visualiza Dados

Django – Admin – Visualiza Dados

Exemplo:

Neste exemplo criamos um formulário de um modelo de dados usando as APIs de Forms do Django para obter uma entrada de dados do usuário.

Python

Model.py

from django.db import models

# Cria modelo
class DevAberto (models.Model):
    usuario = models.CharField(max_length=30)
    linguagem = models.CharField(max_length=50)
    email = models.EmailField()

    # Define unicode para o Django Admin
    def __unicode__(self):
        return self.usuario

View.py

from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponse

 # Importa form

from meusite.forms import MeuForm

# Exibe View
def home(request):

    # Cria form
    form = MeuForm(request.POST or None)

    # Valida e salva
    if form.is_valid():
        salvar = form.save(commit=False)
        salvar.save()
        return HttpResponse("Dados inseridos com sucesso!")        

    # Chama Template
    return render_to_response("devaberto.html",
                              locals(),
                              context_instance = RequestContext(request))

Template devaberto.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">

	</head>

	<body>
		<div>
			<header>
				<h1>Desenvolvimento Aberto</h1>
			</header>
			<nav>
				<p>
					<a href="/">Home</a>
				</p>

			</nav>

			<div>
				<p>
					Meu Formulário
				</p>
				<form method="post" action="">
					{% csrf_token %}
					{{ form.as_p }}
					<input type="submit" />
				</form>
			</div>

			<footer>
				<p>
					Copyright  by Desenvolvimento aberto
				</p>
			</footer>
		</div>
	</body>
</html>

Forms.py

from  django import forms

# Importa modelo
from meusite.models import DevAberto

# Cria classe do form para o modelo
class MeuForm(forms.ModelForm):
    class Meta:
        model = DevAberto

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s