04 Shell Streaming
O Django Shell é uma ferramenta interativa extremamente útil para trabalhar diretamente com os dados da sua aplicação, testar funcionalidades, e manipular modelos de forma rápida. No caso do app de streaming de áudio e vídeo que criamos, o Django Shell pode ser usado para executar várias operações no banco de dados sem precisar criar views ou usar a interface do admin.
Acessando o Django Shell
Para abrir o Django Shell, você pode executar o seguinte comando no terminal, dentro do diretório do seu projeto Django:
Possibilidades no Django Shell
Aqui estão algumas operações que você pode realizar diretamente no shell, utilizando o modelo Content
que criamos no app.
1. Criar um novo conteúdo
No Django Shell, você pode criar novos registros no banco de dados, sem precisar usar o formulário HTML.
from content.models import Content
# Criar um novo objeto de conteúdo
content = Content.objects.create(
title="Django Tutorial",
description="A comprehensive tutorial on Django framework.",
file_url="https://example.com/videos/django_tutorial.mp4",
thumbnail_url="https://example.com/thumbnails/django_thumb.jpg",
content_type="video",
is_public=True
)
print(content) # Ver o conteúdo criado
Esse código cria um novo conteúdo e salva diretamente no banco de dados. O Content.objects.create()
combina a criação e o salvamento em uma única linha.
2. Listar todos os conteúdos
Para obter todos os conteúdos que foram criados até agora, você pode usar o método all()
do queryset.
Isso irá listar todos os conteúdos cadastrados, mostrando o título e a descrição de cada um.
3. Filtrar conteúdos
Você pode filtrar registros específicos com base em critérios. Por exemplo, listar apenas os conteúdos públicos (is_public=True
):
public_contents = Content.objects.filter(is_public=True)
for content in public_contents:
print(f"Título: {content.title}, Público: {content.is_public}")
Ou buscar por tipo de conteúdo, como todos os vídeos:
videos = Content.objects.filter(content_type="video")
for video in videos:
print(f"Vídeo: {video.title}")
4. Atualizar um conteúdo existente
No Django Shell, você pode buscar um objeto e atualizá-lo. Vamos modificar um conteúdo específico:
# Encontrar um conteúdo pelo ID (ou por outro campo)
content_to_update = Content.objects.get(id=1)
# Atualizar os campos
content_to_update.title = "Updated Django Tutorial"
content_to_update.description = "Updated description for the Django tutorial."
content_to_update.save() # Salvar as alterações no banco de dados
print("Conteúdo atualizado:", content_to_update.title, content_to_update.description)
5. Excluir um conteúdo
Se você quiser remover um conteúdo do banco de dados, pode usar o método delete()
:
# Encontrar o conteúdo pelo ID e deletar
content_to_delete = Content.objects.get(id=1)
content_to_delete.delete()
print("Conteúdo deletado com sucesso!")
6. Consultas avançadas
Você também pode realizar consultas mais complexas, como ordenar os conteúdos por título ou buscar aqueles criados recentemente:
- Ordenar por título:
sorted_contents = Content.objects.order_by('title')
for content in sorted_contents:
print(content.title)
- Filtrar por data de criação (supondo que o modelo tem um campo
created_at
):
from django.utils import timezone
recent_contents = Content.objects.filter(created_at__gte=timezone.now() - timezone.timedelta(days=7))
for content in recent_contents:
print(content.title)
7. Verificar métodos personalizados (se houver)
Se você tiver métodos personalizados no modelo Content
, pode testá-los diretamente no Django Shell.
Por exemplo, se você tiver um método que retorna se o conteúdo é um vídeo:
Você pode testá-lo no shell assim:
content = Content.objects.get(id=1)
print(content.is_video()) # True se for um vídeo, False se for áudio
8. Verificar a contagem de conteúdos
Se você quiser ver quantos conteúdos já foram cadastrados no total ou em categorias específicas:
# Total de conteúdos
total_contents = Content.objects.count()
print("Total de conteúdos:", total_contents)
# Total de vídeos
video_count = Content.objects.filter(content_type='video').count()
print("Total de vídeos:", video_count)
Conclusão
O Django Shell permite explorar o modelo de dados do seu app rapidamente, sem a necessidade de criar views, templates ou interagir com a API. Ele é muito útil para testar funcionalidades, realizar consultas, manipular dados e garantir que os dados estejam sendo gerados e tratados conforme esperado. No contexto de um app de streaming, você pode facilmente listar, criar, atualizar e deletar conteúdos de áudio e vídeo diretamente pelo shell, otimizando o desenvolvimento e a manutenção da aplicação.