Tutorial do AfroPython
  • Sobre
  • Introdução
  • Codenvy
    • O que é o Codenvy
    • Crie uma conta
    • Complete o cadastro
    • Dashboard
  • Como funciona a internet?
  • Introdução a linha de comando
    • O que é a linha de comando?
    • Conhecendo a linha de comando
    • Seu primeiro comando (YAY!)
    • O básico
      • Pasta atual
      • Criando uma pasta
      • Listando arquivos e pastas
      • Entrando nas pastas
      • Exercite-se!
      • Limpando
      • Resumo
  • Editor de Código
    • Porque precisamos de um editor de código?
  • Introdução ao Python
    • Strings
    • Erros
    • Variáveis
    • A função print
    • Listas
    • Dicionários
    • Resumo até agora
    • Fazendo comparações
    • Booleanos
    • Salve o código!
      • if...elif...else
      • E se não?
      • Resumo
    • Suas próprias funções
    • Laços de repetição
    • Resumo
  • Django, o que é?
    • Por que você precisa de um framework?
    • O que acontece quando alguém solicita um site do seu servidor?
  • Seu primeiro projeto Django
    • Configurando
    • Instalando o banco de dados
  • Modelos do Django
    • Objetos
    • Modelo do Django
      • Criando uma aplicação
      • Criando um modelo
      • Criando tabelas
  • Administração
  • URLs
    • O que é uma URL?
    • Como funcionam as URLs no Django?
    • Sua primeira URL Django
    • blog.urls
  • Views
    • blog/views.py
  • Introdução a HTML
    • Seu primeiro template!
    • Head & Body
    • Customize seu template
  • QuerySet e ORM do Django
    • O que é um QuerySet?
    • O shell do Django
      • Todos os objetos
      • Criando um objeto
      • Adicionando objetos
      • Filtrar objetos
      • Ordenando objetos
  • Dados dinâmicos no template
    • QuerySet
  • Templates
    • O que são tags de template
    • Modelo de lista de post de exibição
  • CSS - Deixe mais bonito!
    • Vamos usar o Bootstrap!
    • Arquivos estáticos no Django
    • Seu primeiro arquivo CSS!
  • Estendendo templates
  • Amplie sua aplicação
  • Formulários
  • URLs e Views
  • Template
  • Salvando o formulário
  • Validação de formulários
  • Editando o formulário
  • Segurança
  • O que vem depois!
Powered by GitBook
On this page

Was this helpful?

Formulários

Por último, queremos uma forma legal de adicionar e editar as postagens do nosso blog. A ferramenta de administração do Django é legal, mas ela é um pouco difícil de customizar e de deixar mais bonita. Se usarmos formulários teremos controle absoluto sobre nossa interface - podemos fazer qualquer coisa que imaginarmos!

Uma coisa legal do Django é que nós podemos tanto criar um formulário do zero como podemos criar um ModelForm que salva o resultado do formulário para um determinado modelo.

Isso é exatamente o que nós queremos fazer: criaremos um formulário para o nosso modelo Post.

Assim como toda parte importante do Django, os formulários tem seu próprio arquivo: forms.py.

Precisamos criar um arquivo com este nome dentro da pasta blog.

blog
   └── forms.py

Ok, vamos abri-lo e escrever nele o seguinte:

blog/forms.py

from django import forms

from .models import Post

class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('title', 'text')

Primeiro precisamos importar o módulo de formulários do Django (from django import forms) e, obviamente, nosso modelo Post (from .models import Post).

PostForm, como você já deve suspeitar, é o nome do nosso formulário. Precisamos dizer ao Django que este formulário é um ModelForm (assim o Django pode fazer a mágica pra gente) - o forms.ModelForm é o responsável por isso.

Segundo, nós temos a classe Meta onde dizemos ao Django qual modelo deveria ser usado para criar este formulário (model = Post).

Finalmente, nós podemos dizer qual(is) campo(s) deveriam entrar em nosso formulário. Nesse cenário nós queremos apenas o title e text para ser exposto - author deveria ser a pessoa que está logada no sistema (nesse caso, você!) e created_date deveria ser setado automaticamente quando nós criamos um post (no código), correto?

E é isso aí! Tudo o que precisamos fazer agora é usar o formulário em uma view e mostrá-lo em um template.

Então, mais uma vez, nós iremos criar: um link para a página, uma URL, uma view e um template.

Link para a página com o formulário

É hora de abrir blog/templates/blog/base.html. Nós iremos adicionar um link na div de nome cabecalho-pagina:

blog/templates/blog/base.html

<a href="{% url 'post_new' %}" class="top-menu"><span class="glyphicon glyphicon-plus"></span></a>

Note que nós queremos chamar nossa nova view de post_new.

Depois de adicionar a linha, seu html deve se parecer com isso:

blog/templates/blog/base.html

{% load staticfiles %}
<html>
    <head>
        <title>Blog do AfroPython</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/bootstrap-theme.min.css">
        <link href="https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet">
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
    </head>
    <body>
        <div class="cabecalho-pagina">
            <a href="{% url 'post_new' %}" class="top-menu"><span class="glyphicon glyphicon-plus"></span></a>
            <h1><a href="/">Blog do AfroPython</a></h1>
        </div>
        <div class="content container">
            <div class="row">
                <div class="col-md-8">
                    {% block content %}
                    {% endblock %}
                </div>
            </div>
        </div>
    </body>
</html>

Depois de salvar e recarregar sua página, você verá um erro familiar: NoReverseMatch, certo?

PreviousAmplie sua aplicaçãoNextURLs e Views

Last updated 6 years ago

Was this helpful?