Heim  >  Artikel  >  Backend-Entwicklung  >  Aufbau eines sicheren anonymen Feedbacksystems mit Django, Twilio und Pinata

Aufbau eines sicheren anonymen Feedbacksystems mit Django, Twilio und Pinata

Susan Sarandon
Susan SarandonOriginal
2024-10-06 06:13:30727Durchsuche

In diesem Leitfaden werde ich Sie durch den Aufbau eines sicheren anonymen Feedbacksystems mit Django, Twilio für SMS-Benachrichtigungen, Pinata für sichere Medien-Uploads und TailwindCSS für reaktionsfähiges Design führen. Am Ende dieses Tutorials verfügen Sie über ein voll funktionsfähiges Feedback-System, in dem Benutzer Feedback abgeben, optional Medien hochladen und SMS-Benachrichtigungen erhalten können – alles unter Berücksichtigung von Sicherheit und Datenschutz.

Demo: Live-Link

Hauptmerkmale:

  • Anonyme Feedback-Einreichung: Benutzer können Feedback oder Supportanfragen anonym einreichen.
  • Sichere Medien-Uploads: Benutzer können Mediendateien sicher über Pinata hochladen, die auf IPFS gespeichert sind.
  • Twilio-SMS-Benachrichtigungen: Sendet automatisch eine SMS-Bestätigung über Twilio an Benutzer.
  • Responsive UI: Mit TailwindCSS gestaltet für ein nahtloses, modernes Design.

Verwendete Technologien:

  • Django: Backend-Framework für das Feedback-System.
  • Twilio: Verarbeitet SMS-Benachrichtigungen.
  • Pinata: Bietet IPFS-basierten sicheren Medienspeicher.
  • TailwindCSS: Für reaktionsfähiges Frontend-Styling.

Schritt 1: Projekteinrichtung und Abhängigkeiten

1.1. Erstellen und richten Sie eine virtuelle Umgebung ein
Beginnen Sie mit der Einrichtung Ihrer Projektumgebung. Stellen Sie sicher, dass Sie Python installiert haben und eine virtuelle Umgebung einrichten:


python3 -m venv venv
source venv/bin/activate


Unter Windows:


venv\Scripts\activate


Installieren Sie die erforderlichen Pakete:


pip install django twilio python-decouple requests gunicorn


1.2. Starten Sie ein Django-Projekt
Initialisieren Sie ein neues Django-Projekt und eine neue App:


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


Schritt 2: Erstellen Sie das Feedback-Übermittlungssystem

2.1. Erstellen Sie ein Feedback-Modell
Definieren Sie ein Modell zum Speichern von Feedback-Übermittlungen in 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}"


Dieses Modell erfasst Feedback, E-Mail, Telefonnummer und optionale Medien-URLs.

2.2. Erstellen Sie Ansichten für die Bearbeitung von Feedback und SMS-Benachrichtigungen
Erstellen Sie in „feedback/views.py“ Ansichten, um Feedback zu verarbeiten und SMS-Benachrichtigungen zu senden:


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')


Diese Ansicht verwaltet Formularübermittlungen, lädt optionale Medien auf Pinata hoch und sendet SMS mit Twilio.

2.3. Erstellen des Feedback-Formulars
Erstellen Sie ein HTML-Formular, um Feedback zu übermitteln. Erstellen Sie in Ihrem Vorlagenordner die Datei „feedback_form.html:

“.

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Submit Feedback</title>
    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-gray-100">
    <div class="container mx-auto px-4 py-6">
        <h1 class="text-3xl font-bold text-center">Submit Feedback</h1>
        <form method="POST" action="" enctype="multipart/form-data" class="bg-white p-6 rounded shadow-md">
            {% csrf_token %}
            <div class="mb-4">
                <label for="message" class="block text-lg font-semibold">Your Feedback</label>
                <textarea name="message" id="message" class="w-full p-2 border rounded" required></textarea>
            </div>
            <div class="mb-4">
                <label for="sender_email" class="block text-lg font-semibold">Your Email</label>
                <input type="email" name="sender_email" id="sender_email" class="w-full p-2 border rounded" required>
            </div>
            <div class="mb-4">
                <label for="sender_phone" class="block text-lg font-semibold">Your Phone Number</label>
                <input type="tel" name="sender_phone" id="sender_phone" class="w-full p-2 border rounded" required>
            </div>
            <div class="mb-4">
                <label for="media_file" class="block text-lg font-semibold">Upload Media (Optional)</label>
                <input type="file" name="media_file" id="media_file" class="w-full p-2 border rounded">
            </div>
            <div class="text-center">
                <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded">Submit</button>
            </div>
        </form>
    </div>
</body>
</html>


Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata
Bild des Frontends

Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata
Bild des Pinata-Dashboards mit den hochgeladenen Dateien

Schritt 3: Twilio und Pinata konfigurieren

3.1. Umgebungsvariablen einrichten
Erstellen Sie eine .env-Datei im Stammverzeichnis Ihres Projekts, um vertrauliche Informationen wie Twilio- und Pinata-API-Schlüssel zu speichern:


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


Stellen Sie sicher, dass Sie .env zu Ihrer .gitignore-Datei hinzufügen, damit es nicht an GitHub gepusht wird:


.env


3.2. Aktualisieren Sie „settings.py“, um Umgebungsvariablen zu verwenden
Verwenden Sie python-depair, um Umgebungsvariablen sicher aus der .env-Datei zu laden:


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')


Schritt 4: Auf GitHub übertragen

4.1. Git initialisieren und an GitHub senden

  1. Initialisieren Sie ein Git-Repository im Stammverzeichnis Ihres Projekts:

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


  1. Fügen Sie Ihr GitHub-Repository als Remote hinzu und pushen Sie Ihr Projekt:

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




Fazit

In diesem Tutorial haben Sie ein sicheres anonymes Feedbacksystem mit Django, Twilio für SMS-Benachrichtigungen und Pinata für Medien-Uploads erstellt. Sie haben außerdem gelernt, wie Sie Ihr Projekt auf GitHub übertragen und vertrauliche Informationen mithilfe von Umgebungsvariablen sichern. Dieses System gewährleistet den Datenschutz und ermöglicht es Benutzern gleichzeitig, Feedback abzugeben und SMS-Benachrichtigungen zu erhalten.

Fühlen Sie sich frei, das System weiter zu erweitern, indem Sie weitere Funktionen hinzufügen oder die Sicherheit erhöhen. Wenn Sie diesen Leitfaden hilfreich fanden, teilen Sie uns Ihr Feedback oder Ihre Fragen in den Kommentaren mit!

Das Repo zum Projekt finden Sie hier: Repo

Das obige ist der detaillierte Inhalt vonAufbau eines sicheren anonymen Feedbacksystems mit Django, Twilio und Pinata. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn