Boas praticas para construir APIs REST com Django Rest Framework. Serializers, viewsets, autenticacao e paginacao.
Vitor Neuenschwander
CS Student & Developer
DRF e o padrao da industria para construir APIs em Python. Combina a robustez do Django com ferramentas especificas para APIs REST.
myproject/
api/
__init__.py
models.py
serializers.py
views.py
urls.py
permissions.py
myproject/
settings.py
urls.py
from django.db import modelsclass Project(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
tech_stack = models.JSONField(default=list)
github_url = models.URLField(blank=True)
status = models.CharField(
max_length=20,
choices=[
('planning', 'Planning'),
('in_progress', 'In Progress'),
('completed', 'Completed'),
],
default='planning'
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-created_at']
from rest_framework import serializers
from .models import Project
class ProjectSerializer(serializers.ModelSerializer):
class Meta:
model = Project
fields = '__all__'
read_only_fields = ['created_at', 'updated_at']
def validate_title(self, value):
if len(value) < 3:
raise serializers.ValidationError(
"Titulo deve ter pelo menos 3 caracteres"
)
return value
from rest_framework import viewsets, filters
from rest_framework.pagination import PageNumberPagination
from .models import Project
from .serializers import ProjectSerializer
class StandardPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
class ProjectViewSet(viewsets.ModelViewSet):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
pagination_class = StandardPagination
filter_backends = [filters.SearchFilter, filters.OrderingFilter]
search_fields = ['title', 'description']
ordering_fields = ['created_at', 'title']
settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
],
}
DRF oferece todas as ferramentas para construir APIs profissionais. Seguindo esses padroes, voce garante consistencia e manutenibilidade no seu projeto.
Implementacao de um perceptron multi-camada sem frameworks. Entendendo backpropagation, gradient descent e funcoes de ativacao na pratica.
BFS, DFS, Dijkstra e Kruskal implementados em Python e C. Preparacao para a OBI e competicoes de programacao.