🏇 Django Cheat Sheet

🎯 Site oficial do Django (Documentação)

# Comando / Função / Parâmetro O que faz Exemplo
1django-admin startprojectCria um novo projeto Djangodjango-admin startproject meu_projeto
2python manage.py startappCria um novo app dentro do projetopython manage.py startapp core
3python manage.py runserverInicia o servidor de desenvolvimentopython manage.py runserver 8080
4python manage.py makemigrationsCria arquivos de migração baseados nos modelspython manage.py makemigrations
5python manage.py migrateAplica as migrações ao banco de dadospython manage.py migrate
6python manage.py createsuperuserCria um usuário administradorpython manage.py createsuperuser
7python manage.py shellAbre o shell interativo do Djangopython manage.py shell
8python manage.py collectstaticReúne arquivos estáticos para produçãopython manage.py collectstatic
9models.CharField()Campo de texto curtonome = models.CharField(max_length=100)
10models.TextField()Campo de texto longodescricao = models.TextField()
11models.IntegerField()Campo de número inteiroidade = models.IntegerField()
12models.DateTimeField()Campo de data e horacriado_em = models.DateTimeField(auto_now_add=True)
13models.BooleanField()Campo booleano (True/False)ativo = models.BooleanField(default=True)
14models.EmailField()Valida se o texto é um e-mailemail = models.EmailField()
15models.ForeignKey()Relacionamento Many-to-Onecat = models.ForeignKey(Categoria, on_delete=models.CASCADE)
16models.ManyToManyField()Relacionamento Many-to-Manytags = models.ManyToManyField(Tag)
17models.OneToOneField()Relacionamento One-to-Oneperfil = models.OneToOneField(User, on_delete=models.CASCADE)
18models.ImageField()Campo para upload de imagensfoto = models.ImageField(upload_to='fotos/')
19models.FileField()Campo para upload de arquivos geraisdoc = models.FileField(upload_to='docs/')
20models.DecimalField()Número decimal de precisão fixapreco = models.DecimalField(max_digits=5, decimal_places=2)
21models.SlugField()Texto para URLs (letras, hífens, números)slug = models.SlugField(unique=True)
22null=TruePermite valor nulo no banco de dadosbio = models.TextField(null=True)
23blank=TruePermite que o campo fique vazio em formuláriossite = models.URLField(blank=True)
24Model.objects.all()Retorna todos os registrosProdutos.objects.all()
25Model.objects.filter()Filtra registros por critériosUser.objects.filter(is_staff=True)
26Model.objects.exclude()Exclui registros que casam com o critérioUser.objects.exclude(email='')
27Model.objects.get()Retorna um único objeto (erro se 0 ou +1)User.objects.get(id=1)
28Model.objects.create()Cria e salva um objeto em um passoUser.objects.create(username='leo')
29Model.objects.get_or_create()Retorna objeto ou cria se não existirobj, created = Tag.objects.get_or_create(nome='Django')
30Model.objects.order_by()Ordena os resultadosUser.objects.order_by('-date_joined')
31Model.objects.count()Conta o número de registrosPost.objects.count()
32Model.objects.exists()Verifica se existe algum registroPost.objects.filter(slug='oi').exists()
33Model.objects.first()Retorna o primeiro registro do QuerySetUser.objects.all().first()
34Model.objects.values()Retorna dicionários em vez de instânciasUser.objects.values('username')
35Model.objects.select_related()Otimiza busca de FK (JOIN SQL)Livro.objects.select_related('autor')
36Model.objects.prefetch_related()Otimiza busca ManyToMany ou reversaAutor.objects.prefetch_related('livros')
37__icontainsBusca por texto (case-insensitive)User.objects.filter(nome__icontains='ana')
38__gte / __lteMaior ou igual / Menor ou igualUser.objects.filter(idade__gte=18)
39__inFiltra por uma lista de valoresUser.objects.filter(id__in=[1, 2, 3])
40render()Retorna um template renderizadoreturn render(request, 'index.html', context)
41redirect()Redireciona para outra URL ou viewreturn redirect('home')
42get_object_or_404()Busca objeto ou retorna erro 404post = get_object_or_404(Post, id=id)
43HttpResponse()Retorna resposta HTTP brutareturn HttpResponse("Olá Mundo")
44JsonResponse()Retorna resposta em formato JSONreturn JsonResponse({'status': 'ok'})
45{% if %}Bloco condicional no HTML{% if user.is_authenticated %}
46{% for %}Loop para iterar listas{% for item in lista %}
47{% url %}Gera URL a partir do nome da rota{% url 'detalhe' post.id %}
48{% extends %}Herança de template pai{% extends 'base.html' %}
49{% block %}Define área sobrescrevível{% block content %}{% endblock %}
50{% static %}Caminho para arquivos estáticos{% static 'css/style.css' %}
51{% csrf_token %}Proteção contra ataques CSRF (Forms)<form>{% csrf_token %}...
52{{ value|lower }}Filtro: Converte para minúsculo{{ nome|lower }}
53{{ value|date }}Filtro: Formata datas{{ data|date:"d/m/Y" }}
54admin.site.register()Registra model no painel adminadmin.site.register(Post)
55list_displayColunas exibidas na lista do adminlist_display = ('id', 'titulo')
56search_fieldsBarra de busca no adminsearch_fields = ('nome', 'email')
57list_filterFiltros laterais no adminlist_filter = ('status',)
58forms.FormClasse base para formulários manuaisclass ContatoForm(forms.Form):
59forms.ModelFormFormulário baseado em um Modelclass PostForm(forms.ModelForm):
60form.is_valid()Valida dados do formulárioif form.is_valid():
61form.cleaned_dataDicionário de dados validadosemail = form.cleaned_data['email']
62INSTALLED_APPSLista de apps ativos no projetoINSTALLED_APPS = ['core', ...]
63DATABASESConfiguração de conexão com banco'ENGINE': 'django.db.backends.postgresql'
64MIDDLEWAREProcessadores de requisição/resposta'django.middleware.security.SecurityMiddleware'
65TEMPLATESConfiguração de motores de template'DIRS': [BASE_DIR / 'templates']
66ALLOWED_HOSTSDomínios permitidos para o appALLOWED_HOSTS = ['meusite.com']
67path()Define uma rota URLpath('post//', views.detalhe)
68re_path()Define rota usando Regexre_path(r'^artigo/(?P<slug>[\w-]+)/$', views.artigo)
69include()Inclui URLs de outro apppath('blog/', include('blog.urls'))
70authenticate()Verifica credenciais de usuáriouser = authenticate(username=u, password=p)
71login()Inicia sessão do usuáriologin(request, user)
72logout()Encerra sessão do usuáriologout(request)
73@login_requiredDecorator para exigir login na view@login_required def perfil(request):
74LoginRequiredMixinExige login em Class Based Viewsclass MyView(LoginRequiredMixin, View):
75request.userUsuário logado na requisição atualif request.user.is_authenticated:
76request.methodTipo de método HTTP (GET, POST...)if request.method == 'POST':
77request.FILESDicionário com arquivos enviadosform = PostForm(request.POST, request.FILES)
78messages.success()Envia mensagem de sucesso ao usuáriomessages.success(request, 'Salvo!')
79reverse()Retorna a URL pelo nome no Pythonurl = reverse('home')
80Model.get_absolute_url()Método padrão para URL do objetodef get_absolute_url(self): ...
81Meta: unique_togetherGarante unicidade de dois campos juntosunique_together = ['sessao', 'ordem']
82Meta: verbose_nameNome legível no singular (Admin)verbose_name = 'Categoria'
83Meta: orderingOrdenação padrão do Modelordering = ['-criado_em']
84python manage.py testExecuta testes automatizadospython manage.py test core
85TestCaseClasse base para criar testesclass MyTest(TestCase):
86F() expressionsOperações no banco sem carregar em PythonF('estoque') - 1
87Q() objectsFiltros complexos com OR/ANDQ(nome='A') | Q(nome='B')
88django-admin helpMostra ajuda de comandosdjango-admin help migrate
89STATIC_URLPrefixo URL para arquivos estáticosSTATIC_URL = 'static/'
90MEDIA_URLPrefixo URL para arquivos de usuáriosMEDIA_URL = '/media/'
91LANGUAGE_CODEDefine o idioma do sistemaLANGUAGE_CODE = 'pt-br'
92TIME_ZONEDefine o fuso horárioTIME_ZONE = 'America/Sao_Paulo'
93@receiver(post_save)Executa função após salvar Model (Signals)@receiver(post_save, sender=User)
94Model.objects.aggregate()Cálculos sobre o QuerySet (Sum, Avg)Model.objects.aggregate(Avg('preco'))
95Model.objects.annotate()Adiciona campos calculados por linhaUser.objects.annotate(total_posts=Count('post'))
96TemplateViewCBV simples para renderizar HTMLclass HomeView(TemplateView):
97ListViewCBV para listar objetosclass PostList(ListView):
98DetailViewCBV para exibir um objeto detalhadoclass PostDetail(DetailView):
99CreateViewCBV para criar novo objetoclass PostCreate(CreateView):
100UpdateViewCBV para editar objetoclass PostUpdate(UpdateView):
101DeleteViewCBV para deletar objetoclass PostDelete(DeleteView):
102FormViewCBV para processar formuláriosclass MyFormView(FormView):
103request.POST.get()Pega valor do POST de forma segurarequest.POST.get('nome', 'Anonimo')
104slugify()Transforma string em slugslugify("Olá Mundo") # ola-mundo
105python manage.py dumpdataExporta dados do banco para JSONpython manage.py dumpdata > backup.json
106python manage.py loaddataImporta dados de um JSONpython manage.py loaddata backup.json
107DEBUG = TrueAtiva modo de erro detalhadoDEBUG = False # Produção