"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Construindo um sistema de feedback anônimo seguro com Django, Twilio e Pinata

Construindo um sistema de feedback anônimo seguro com Django, Twilio e Pinata

Publicado em 2024-11-06
Navegar:925

Neste guia, orientarei você na construção de um sistema seguro de feedback anônimo usando Django, Twilio para notificações por SMS, Pinata para uploads de mídia seguros e TailwindCSS para estilo responsivo. Ao final deste tutorial, você terá um sistema de feedback totalmente funcional onde os usuários podem enviar feedback, opcionalmente fazer upload de mídia e receber notificações por SMS – tudo com segurança e privacidade em mente.

Demonstração: link ao vivo

Principais recursos:

  • Envio de feedback anônimo: os usuários podem enviar comentários ou solicitações de suporte anonimamente.
  • Uploads de mídia seguros: os usuários podem fazer upload de arquivos de mídia com segurança via Pinata, armazenados em IPFS.
  • Notificações por SMS da Twilio: envia automaticamente confirmação por SMS aos usuários por meio da Twilio.
  • IU responsiva: estilizada com TailwindCSS para um design moderno e contínuo.

Tecnologias utilizadas:

  • Django: estrutura de back-end para o sistema de feedback.
  • Twilio: lida com notificações por SMS.
  • Pinata: fornece armazenamento de mídia seguro baseado em IPFS.
  • TailwindCSS: para estilo de front-end responsivo.

Etapa 1: configuração e dependências do projeto

1.1. Crie e configure um ambiente virtual
Comece configurando o ambiente do seu projeto. Certifique-se de ter o Python instalado e configurar um ambiente virtual:


python3 -m venv venv
source venv/bin/activate


No Windows:


venv\Scripts\activate


Instale os pacotes necessários:


pip install django twilio python-decouple requests gunicorn


1.2. Inicie um projeto Django
Inicialize um novo projeto e aplicativo Django:


django-admin startproject config .
python manage.py startapp feedback


Etapa 2: Construa o Sistema de Envio de Feedback

2.1. Crie um modelo de feedback
Defina um modelo para armazenar envios de feedback em feedback/models.py:


from django.db import models

class Feedback(models.Model):
    message = models.TextField()
    sender_email = models.EmailField()
    sender_phone = models.CharField(max_length=15)
    media_url = models.URLField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"Feedback from {self.sender_email}"


Este modelo captura feedback, e-mail, número de telefone e URLs de mídia opcionais.

2.2. Crie visualizações para lidar com feedback e notificações por SMS
Em feedback/views.py, crie visualizações para processar feedback e enviar notificações por SMS:


from django.shortcuts import render
from django.http import HttpResponse
from .models import Feedback
from twilio.rest import Client
from django.conf import settings
import requests

def upload_to_pinata(file):
    url = "https://api.pinata.cloud/pinning/pinFileToIPFS"
    headers = {
        'pinata_api_key': settings.PINATA_API_KEY,
        'pinata_secret_api_key': settings.PINATA_SECRET_API_KEY,
    }
    files = {'file': file}
    response = requests.post(url, files=files, headers=headers)
    return response.json().get('IpfsHash')

def submit_feedback(request):
    if request.method == 'POST':
        message = request.POST.get('message')
        sender_email = request.POST.get('sender_email')
        sender_phone = request.POST.get('sender_phone')
        file = request.FILES.get('media_file', None)

        media_url = None
        if file:
            media_url = upload_to_pinata(file)

        feedback = Feedback.objects.create(
            message=message,
            sender_email=sender_email,
            sender_phone=sender_phone,
            media_url=media_url
        )

        # Send SMS using Twilio
        client = Client(settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN)
        client.messages.create(
            body=f"Feedback received from {sender_phone}: {message}",
            from_=settings.TWILIO_PHONE_NUMBER,
            to=sender_phone
        )

        return HttpResponse("Feedback submitted successfully!")

    return render(request, 'feedback_form.html')


Esta visualização lida com envios de formulários, carrega mídia opcional para Pinata e envia SMS usando Twilio.

2.3. Criando o Formulário de Feedback
Crie um formulário HTML para enviar comentários. Na sua pasta de modelos, crie feedback_form.html:


{% load static %}



    
    
    Submit Feedback
    


    

Submit Feedback

{% csrf_token %}

Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata
Imagem do front-end

Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata
Imagem do painel Pinata mostrando os arquivos enviados

Etapa 3: configurando Twilio e Pinata

3.1. Configurar variáveis ​​de ambiente
Crie um arquivo .env no diretório raiz do seu projeto para armazenar informações confidenciais, como chaves de API Twilio e Pinata:


SECRET_KEY=your-django-secret-key
DEBUG=True

TWILIO_ACCOUNT_SID=your_twilio_account_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
TWILIO_PHONE_NUMBER=your_twilio_phone_number

PINATA_API_KEY=your_pinata_api_key
PINATA_SECRET_API_KEY=your_pinata_secret_api_key


Certifique-se de adicionar .env ao seu arquivo .gitignore para que ele não seja enviado ao GitHub:


.env


3.2. Atualize settings.py para usar variáveis ​​de ambiente
Use python-decouple para carregar variáveis ​​de ambiente com segurança do arquivo .env:


from decouple import config

SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)

TWILIO_ACCOUNT_SID = config('TWILIO_ACCOUNT_SID')
TWILIO_AUTH_TOKEN = config('TWILIO_AUTH_TOKEN')
TWILIO_PHONE_NUMBER = config('TWILIO_PHONE_NUMBER')

PINATA_API_KEY = config('PINATA_API_KEY')
PINATA_SECRET_API_KEY = config('PINATA_SECRET_API_KEY')


Etapa 4: enviar para GitHub

4.1. Inicialize o Git e envie para o GitHub

  1. Inicialize um repositório Git na raiz do seu projeto:

git init
git add .
git commit -m "Initial commit for feedback system"


  1. Adicione seu repositório GitHub como remoto e envie seu projeto:

git remote add origin https://github.com/yourusername/feedback-system.git
git push -u origin main




Conclusão

Neste tutorial, você construiu um sistema seguro de feedback anônimo usando Django, Twilio para notificações por SMS e Pinata para uploads de mídia. Você também aprendeu como enviar seu projeto para o GitHub e proteger informações confidenciais usando variáveis ​​de ambiente. Este sistema garante a privacidade ao mesmo tempo que permite que os usuários enviem comentários e recebam notificações por SMS.

Sinta-se à vontade para expandir ainda mais o sistema adicionando mais recursos ou melhorando a segurança. Se você achou este guia útil, compartilhe seus comentários ou perguntas nos comentários!

O Repo do Projeto pode ser encontrado aqui: Repo

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/chidoziemanagwu/building-a-secure-anonymous-feedback-system-with-django-twilio-and-pinata-4bh?1 Se houver alguma infração, entre em contato com [email protected] para Delete.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3