Tutorial Python Django: Formulários

Documentos relacionados
Popebu CMS Documentation

Popebu CMS Documentation

Django Faleconosco Documentation

Frameworks para interfaces móveis

A diferença entre um site que implementa CSS e outro que não o usa é gigantesca e notável.

Aplicativos móveis com HTML5

Oficina de django. 1º Dia - Introdução à ferramenta

Tutorial de Wordpress

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 5 PROF. EMILIO PARMEGIANI

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Gerando um programa executável a partir de um módulo Python

O que faz um servidor/navegador web? 14/03/2016 Rômulo da Silva Lima Slid e 2

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

Bom, o Flex proporciona, de acordo com a criatividade do desenvolvedor ou designer, um resultado final fantástico!

Desvantagens: a) Dependência b) Complexidade de modificação do framework c) Códigos desnecessários que podem deixar o programa pesado

Tutorial para atualização de notícias/blog

PROJETO WEB: Java. Prof Fernando Gomes

Apostila - Desenvolvimento web com PHP

JAVASCRIPT. Desenvolvimento Web I

CURSOS A DISTÂNCIA UNIVERSIDADE FEDERAL DE OURO PRETO

HTML 5 TAGS BÁSICAS E ESTRUTURAIS. Prof. Rosemary Melo

DANJGO. Exemplo de criação de um Blog

Caros Usuários Siga Brasil,

Este exercício será parecido com a montagem de um projeto real, onde trabalhamos com vários arquivos XHTML e um único arquivo CSS.

Dreamweaver CS5 -5- CAPÍTULO 1... Iniciando e conhecendo o dreamweaver...8 Interfaces...23 Criando e confi gurando sites...24 Exercícios...

Login. Criar uma pasta Repositories na raiz do projeto. Criar uma classe Funcoes.cs dentro da pasta Repositories.

TUTORIAL PARA ALUNOS INTRODUÇÃO A UTILIZAÇÃO DA PLATAFORMA MOODLE MATEUS GERWING KOCHEM

Programação Web - HTML

Trabalhando com MDI e Menus

PAINEL DE CONTROLE LANDS AGÊNCIA WEB. Assim que digitar este endereço e apertar enter, você será redirecionado para esta página:

A ferramenta wiki dentro da Plataforma Moodle funciona como um aplicativo que permite a redação e edição coletiva de textos e hipertextos.

Globo Photo Documentation

Modelo de Desenvolvimento Software Tema Wordpress

MANUAL DE GESTÃO DO CONTEÚDO DO PORTAL DA UTFPR COORDENAÇÕES DAS PÓS-GRADUAÇÕES

Aprenda Layout com CSS Lara Popov Zambiasi Bazzi Oberderfer

Linguagem HTML: Frames

Instruções de uso e edição do template HTML

Manual Sistema de Automação de Pedidos Data C

Criando um Editor de Diagramas com Sirius

TUTORIAL FGV WIKI Professor

Manual do usuário people

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

DreamweaverCC Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Desenvolvimento de Aplicações para Internet

Plano de Aula - DreamWeaver CC - cód Horas/Aula

Introdução à linguagem HTML. Volnys Borges Bernal

CURSO INTRODUÇÃO AO SIG USANDO QGIS

PROGRAMAÇÃO PARA INTERNET RICA DHTML E O DOCUMENT OBJECT MODEL

Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos

Objetivo: Teste de Ponto e Teste de Busca da característica (zonas).

Aplicação MVC + Entity + MySQL

Um CRUD full stack. Sessão da Tarde - 2ª Edição

Conceitos de Orientação a Objetos

Introdução ao ASP.NET Aula4

SGCD 2.0 Sistema Gerenciador de Conteúdo Dinâmico

Dreamweaver CS5 Plano de Aula - 24 Aulas (Aulas de 1 Hora).

INSTRUÇÕES PARA O PRIMEIRO ACESSO

Tutorial rápido CMAP TOOLS

Introdução a Web Standards. Reinaldo Ferraz e Clécio Bachini

Surgindo em 1997 a API Java Servlet proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a

Dreamweaver CS6 Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Desenvolvimento Web. HTML 5 Parte I. Prof. Vicente Paulo de Camargo

Manual Site Unidéias.Net

Desenvolvimento Web II

Many-to-many. Mapear no Context Na classe Context.cs, dentro do método OnModelCreating, adicionar o trecho

Plano de Aula - Dreamweaver CS5 - cód Horas/Aula

Tutorial para o aluno Moodle

Conhecendo e editando o seu perfil

MANUAL DE PUBLICAÇÃO NO PORTAL CAMPUS MATÃO

Programação para Internet

Mundo Arduino: Vamos começar a programar?

CURSO MÍDIAS NA EDUCAÇÃO Módulo Informática/Internet

CSS CASCADING STYLE SHEET

Qual a diferença entre SEO On Page e SEO Off Page

1. O que é NFC-e? O acrônimo NFC-e é significa Nota Fiscal de Consumidor Eletrônica,

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

O potencial didático do WordPress no ensino-aprendizagem de Programação WEB. WordCamp Porto Alegre

Tutorial de como criar um evento na Plataforma EVEN3

MANUAL DE UTILIZAÇÃO DO MÓDULO IMPRESSÃO DE ETIQUETAS

Programação para Internet I

CURSO INTRODUÇÃO AO SIG USANDO QGIS

BLOGS. Blogs AMBIENTE VIRTUAL DE APRENDIZAGEM TUTORIAL DO. Autor(es) Scarlat Pâmela Silva

Introdução ao ASP.NET

Como configurar o software Cobian Backup?

Volnys Bernal. Introdução à linguagem HTML. Introdução à linguagem HTML. Visão geral. Visão geral. Visão geral. Visão geral.

Página Padrão Blog. 1 Passo: Clique no ícone BLOG que está em PÁGINAS PADRÃO, conforme

Tutorial do aluno Ambiente Virtual de Aprendizagem (AVA) Rede e-tec Brasil

DOUGLAS CERQUEIRA. FACEBOOK: /douglascruzc

TUTORIAL. Tutorial de como compartilhar o Google Agenda Tutorial de como criar um evento na Plataforma EVEN3

Manual de instalação do software CSIBackup Versão 1.0

Estudo Dirigido - Parte 1

1. Como reduzir o tamanho de suas fotos para postagens no flickr:

Os componentes HTML possuem a capacidade de configurar eventos

1 Introdução e Conceitos básicos

Criando fórum. Vamos aprender a criar um fórum. Siga os passos a seguir!

Desenvolvimento de Atividades Educacionais usando o software Hot Potatoes. Utilizando a ferramenta JCloze

Finalidade dos formulários

JSP (JAVASERVER PAGES)

Transcrição:

Universidade Federal do Piauí Curso: Ciência da Computação Turma: Engenharia de Software II Aluno: Danillo Brito da Mata Matricula:201244196 Tutorial Python Django: Formulários Teresina 2016

Considerações Iniciais É possível adicionar e editar postagens de uma aplicação web através da ferramenta de administração do Django, entretanto esse modo acaba se tornando cansativo e pouco eficiente no quesito da interface humano computador. Com o intuito de agilizar o desenvolvimento de mecanismos de postagens eficientes e com uma interface visual mais agradável ao usuário final da aplicação, foi desenvolvido o sistema de formulários.

Primeiros passos Uma das facilidades do framework django é que o desenvolvedor pode criar um formulário completamente novo a sua escolha ou podemos salvar o resultado de um formulário em um modelo (ModelForm) pré-determinado do django. Com o intuito de facilitar/agilizar o processo de desenvolvimento, utilizaremos ModelForm(s) Faremos, portanto a criação de um formulário do tipo Post Inicialmente, cria-se o arquivo forms.py que deverá conter todos os códigos referentes ao formulário que será descrito neste passo a passo e este arquivo deverá estar na mesma pasta que a sua aplicação web. Para esta explicação usaremos como exemplo um blog simples. Cria-se o arquivo dentro da pasta blog blog forms.py Estrutura básica do formulário from django import forms from.models import Post class PostForm(forms.ModelForm): class Meta: model = Post fields = ('title', 'text',) Primero devem ser importados os formulários do Django (from django import forms) e, nosso modelo (from.models import Post). Nota-se que o nome do nosso formulário é PostForm. É necessário que o framework seja informado que o formulário que pretendemos usar é um formulário do tipo ModelForm, isto é feito na linha forms.modelform. Posteriormente temos a classe Meta onde especificamos o tipo de modelo de formulário será utilizado para criar o formulário (model = Post). Agora informamos o os campos do formulário modelo do django que queremos utilizar em nosso formulário, no caso utilizamos apenas título, que será uma caixa de texto que representará o título da postagem a ser adicionada a aplicação web (title) e texto, que será o texto da postagem a ser adicionada a aplicação (text). Os próximos passos serão: Incorporar o formulário feito a uma vew; Mostra-lo em um template. Os próximos passos irão apresentar erros momentâneos que serão corrigidos no decorrer do desenvolvimento do código.

Link para a página com o formulário Agora iremos abrir nosso blog blog/templates/blog/base.html. Adicionaremos um link em div nomeando page-header desta forma: <a href="{% url 'blog.views.post_new' %}" class="top-menu"><span class="glyphicon glyphicon-plus"></span></a> Note que iremos chamar uma nova visão post_new. Após a adição da linha acima, o html da página deverá parecer-se com isso: {% load staticfiles %} <html> <head> <title>django Girls blog</title> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstraptheme.min.css"> <link href='//fonts.googleapis.com/css?family=lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'> </head> <body> <link rel="stylesheet" href="{% static 'css/blog.css' %}"> <div class="page-header"> <a href="{% url 'blog.views.post_new' %}" class="topmenu"><span class="glyphicon glyphicon-plus"></span></a> </div> <h1><a href="/">django Girls Blog</a></h1> <div class="content container"> <div class="row"> <div class="col-md-8"> {% block content %} {% endblock %}

</html> </body> </div> </div> </div> Após salvar as modificações feias e recarregar a pagina (http://127.0.0.1:8000) um erro será apresentado (NoReverseMatch). URL Agora abriremos o arquivo blog/urls.py e escrever: url(r'^post/new/$', views.post_new, name='post_new'), O código resultante deve ser algo como: from django.conf.urls import include, url from. import views urlpatterns = [ ] url(r'^$', views.post_list), url(r'^post/(?p<pk>[0-9]+)/$', views.post_detail), url(r'^post/new/$', views.post_new, name='post_new'), Ao salvar e recarregar a página um novo erro será apresentado (AttributeError), pois ainda não temos a visão post_new implementada. post_new view Nesta etapa abriremos o arquivo de views da nossa aplicação e adicionaremos a seguinte linha, seguida pelas outras linhas do from: from.forms import PostForm

A view da aplicação deverá estar parecida com esta forma: def post_new(request): form = PostForm() return render(request, 'blog/post_edit.html', {'form': form}) Para iniciar um formulário novo, Post, deve-se chamar a função PostForm() e passalo para o template. Template (Modelos) Inicialmentedeve-se criar o arquivo post_edit.html na pasta blog/templates/blog. Para fazer o formulário funcionar precisamos ainda: Exibir o formulário: Pode-se fazer isso simplesmente com um. A linha que exibe o formulário deve estar dentro de uma tag HTML form: <form method="post">...</form> Deve-se também criar um botão Salvar. Faremos isso através do próprio HTML: <button type="submit">save</button> Por último devemos adicionar na tag form um {% csrf_token %} para que o formulário fique seguro. Ao termino das modificações o HTML post_edit.html deve ficar: {% extends 'blog/base.html' %} {% block content %} <h1>new post</h1> <form method="post" class="post-form">{% csrf_token %} {{ form.as_p }} <button type="submit" class="save btn btn-default">guardar</button> </form> {% endblock %} ENFIM, DEPOIS DE ATUALIZAR! TEMOS NOSSO FORMUARIO!

Entretanto o nosso formulário AINDA não esta completo. Ao digitarmos algo e tentarmos salvar nada acontece, pois ainda precisamos finalizar nosso view para que ao clicarmos no no botão salvar o conteúdo do que for escrito em title e text: ser salvo. Salvando o formulário De volta ao arquivo blog/views.py que atualmente encontra-se: def post_new(request): form = PostForm() return render(request, 'blog/post_edit.html', {'form': form}) Ao enviarmos um formulário, somos redirecionados de volta para o arquivo views, so que desta vez temos mais alguns dados em request.post. Agora, todos os campos vindos do form estarão disponíveis em request.post. Agora em nossa view precisamos tratar duas situações separadas. Uma para a primeira vês em que o formulário for requisitado que ele deve ser apresentado em branco (como na imagem anterior). Outra para quando voltamos para a view com os dados que digitamos no formulário.

if form.is_valid(): post = form.save(commit=false) post.author = request.user post.published_date = timezone.now() post.save() Basicamente, temos duas coisas aqui: Salvamos o formulário com form.save e adicionados um autor. Na maioria das vezes você irá usar form.save(). Sem commit=false Mas nesse caso precisamos fazer isso. def post_new(request): if request.method == "POST": else: form = PostForm(request.POST) if form.is_valid(): post = form.save(commit=false) post.author = request.user post.published_date = timezone.now() post.save() return redirect('blog.views.post_detail', pk=post.pk) form = PostForm() return render(request, 'blog/post_edit.html', {'form': form}) Vamos ver se funciona. Vá para a página http://127.0.0.1:8000/post/novo adicione um title e o text, salve e perceba a que seremos redirecionados para a página de post_detail.