Pular para conteúdo

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:

python manage.py shell

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.

contents = Content.objects.all()
for content in contents:
    print(content.title, content.description)

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:

class Content(models.Model):
    # campos...

    def is_video(self):
        return self.content_type == 'video'

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.