Heim > Artikel > Backend-Entwicklung > Aufbau eines sicheren anonymen Feedbacksystems mit Django, Twilio und Pinata
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
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
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>
Bild des Frontends
Bild des Pinata-Dashboards mit den hochgeladenen Dateien
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')
4.1. Git initialisieren und an GitHub senden
git init git add . git commit -m "Initial commit for feedback system"
<p>git remote add origin https://github.com/yourusername/feedback-system.git<br> git push -u origin main</p>
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!