1
resposta

Como usar vídeo ao invés de foto no django / django rest api?

Ao invés de usar o pillow, qual biblioteca devo usar para trabalhar com vídeos? No caso bastaria usar "files" (request.FILES) ou teria alguma mudança?

1 resposta

Olá André, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Para fazermos o upload de um vídeo usando o formulário do Django não será necessário o uso de uma biblioteca específica, mas existe uma diferença quando ao campo de modelo usado, para arquivos de vídeos usaremos o campo forms.FileField().

O acesso ao arquivo de vídeo poderá ser feito através da requisição, desde que a requisição seja do tipo POST, poderemos acessar usando o método FILES, request.FILES.

Com o REST Framework a implementação de um campo para adicionarmos um vídeo a nossa API será semelhante à implementação do campo para imagens. Para isso, basta realizarmos algumas adições em nossos códigos, como apresentado abaixo.

No arquivo escola/models.py na classe Aluno adicione o campo FileField() como apresentado abaixo, que será responsável por receber o arquivo de vídeo.

class Aluno(models.Model):
    video = models.FileField(blank=True)

Agora será necessário habilitarmos a exibição do campo nas classes serializadas, no arquivo escola/serializer.py nas classes AlunoSerializer e AlunoSerializerV2 adicione o campo video a lista fields, como apresentado abaixo.

fields = ['id', 'nome', 'rg', 'cpf', 'data_nascimento', 'foto', 'video']

Após realizar as mudanças acima, salve os arquivos e crie uma nova migração para o banco de dados e realize a migração, basta executar os comandos abaixo no terminal aberto na pasta do projeto.

python manage.py makemigrations
python manage.py migrate

No arquivo setup/settings.py configure o caminho para os arquivos de mídia, adicionando as seguintes linhas de código.

STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root')
MEDIA_URL = '/media/'

Será necessário configurarmos o caminho da url para os arquivos de mídia, no arquivo setup/urls.py adicione as seguintes linhas de código.

urlpatterns = [
path('admin/', admin.site.urls),
path('', include(router.urls) ),
path('alunos/<int:pk>/matriculas/', ListaMatriculasAluno.as_view()),
path('cursos/<int:pk>/matriculas/', ListaAlunosMatriculados.as_view())
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Após adicionar essas mudanças, salve os arquivos e inicie o servidor com o comando python manage.py runserver

Nesse momento, acesse a API e o endereço que contêm os alunos cadastrados, ao final da página você encontrará o formulário contendo o campo Video. Basta adicionar os dados do aluno e adicionar uma foto e um vídeo aos respectivos campos e clicar em POST.

Formulário de cadastro

Início da transcrição. Imagem contendo o formulário de cadastro de aluno na API REST, possuindo os campos: nome, RG, CPF, data de nascimento, esses campos estão preenchidos com dados fictícios, foi adicionado uma foto ao campo foto e um vídeo ao campo video. Final da transcrição.

Usuário cadastrado com foto e vídeo

Início da transcrição. Temos nessa imagem o painel da API REST acessando os dados do usuário de id: 209, os dados apresentados estão em formato JSON, o usuário possui os seguintes dados de cadastros fictícios: nome, RG, CPF e data de nascimento. Nos campos foto e vídeo é apresentado um endereço para a foto e para o vídeo respectivamente.  Final da transcrição

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!