Pular para o conteúdo
murad.guide

Aplicações Web

Capítulo 22

Django: admin e formulário

2 min de leitura 416 palavras 1 gravura

Neste capítulo você vai registrar Post no admin e criar post por formulário. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.

Seu ponto de partida

Use o exemplo 22-django-admin do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.

Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.

Como praticar

Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.

Mapa visual de Django: admin e formulário

Admin para edição interna

admin.site.register(Post) libera edição local após createsuperuser. Use senha só de estudo, nunca reaproveitada.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

from .models import Post
admin.site.register(Post)

Mude uma coisa e preveja

Crie um post pelo admin.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

Ele aparece na lista pública.

Se não acontecer

Crie o superusuário local.

Formulário ModelForm

Um form público de estudo grava título e texto. CSRF fica ligado.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['titulo', 'texto', 'autor']

Mude uma coisa e preveja

Torne autor opcional no formulário se quiser.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

Submit válido redireciona à lista.

Se não acontecer

Inclua {% csrf_token %} no template.

Sem cadastro real

Não colete dados pessoais. O blog é fictício. Apague o SQLite de prática se for compartilhar a pasta.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

dados fictícios somente

Mude uma coisa e preveja

Publique dois posts de exemplo.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

Ambos listados.

Se não acontecer

migrate e runserver ativos.

Atividades

Atividade 1

Para que serve o admin?

Atividade 2

Por que csrf_token?

Atividade 3

Pode reutilizar a senha do superusuário em outro lugar?

Respostas comentadas

Resposta da atividade 1

Editar dados em ambiente local de estudo.

Resposta da atividade 2

Proteção contra CSRF em POST.

Resposta da atividade 3

Não.

O arquivo completo

Referência do exemplo 22-django-admin, reproduzida aqui para que você possa conferir sem sair da página.

manage.py

#!/usr/bin/env python
import os, sys
def main():
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "atelie.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
if __name__ == "__main__":
    main()

posts/templates/posts/novo.html

<!DOCTYPE html>
<html lang="pt-BR"><head><meta charset="utf-8"><title>Novo post</title></head>
<body>
<h1>Novo post</h1>
<form method="post">{% csrf_token %}{{ form.as_p }}<button type="submit">Salvar</button></form>
<p><a href="/">Voltar</a></p>
</body></html>