在本指南中,我将引导您使用 Django、用于短信通知的 Twilio、用于安全媒体上传的 Pinata 以及用于响应式样式的 TailwindCSS 构建安全匿名反馈系统。在本教程结束时,您将拥有一个功能齐全的反馈系统,用户可以在其中提交反馈、选择上传媒体以及接收短信通知 - 所有这些都考虑到安全和隐私。
演示:实时链接
1.1。创建并设置虚拟环境
首先设置您的项目环境。确保您已安装Python并设置虚拟环境:
python3 -m venv venv source venv/bin/activate
在 Windows 上:
venv\Scripts\activate
安装必要的软件包:
pip install django twilio python-decouple requests gunicorn
1.2。启动 Django 项目
初始化一个新的 Django 项目和应用程序:
django-admin startproject config . python manage.py startapp feedback
2.1。创建反馈模型
在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}"
此模型捕获反馈、电子邮件、电话号码和可选媒体 URL。
2.2。创建用于处理反馈和短信通知的视图
在feedback/views.py中,创建视图来处理反馈并发送短信通知:
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')
此视图处理表单提交、将可选媒体上传到 Pinata 以及使用 Twilio 发送短信。
2.3。创建反馈表
创建 HTML 表单来提交反馈。在模板文件夹中,创建 Feedback_form.html:
{% load static %}Submit Feedback Submit Feedback
前端图片
显示已上传文件的 Pinata 仪表板图像
3.1。设置环境变量
在项目的根目录中创建一个 .env 文件来存储 Twilio 和 Pinata API 密钥等敏感信息:
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
确保将 .env 添加到您的 .gitignore 文件中,这样它就不会被推送到 GitHub:
.env
3.2。更新 settings.py 以使用环境变量
使用 python-de Couple 从 .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')
4.1。初始化Git并推送到GitHub
git init git add . git commit -m "Initial commit for feedback system"
git remote add origin https://github.com/yourusername/feedback-system.git
git push -u origin main
在本教程中,您使用 Django、用于短信通知的 Twilio 和用于媒体上传的 Pinata 构建了一个安全的匿名反馈系统。您还了解了如何将项目推送到 GitHub 并使用环境变量保护敏感信息。该系统确保隐私,同时使用户能够提交反馈和接收短信通知。
您可以通过添加更多功能或增强安全性来进一步扩展系统。如果您发现本指南有帮助,请在评论中分享您的反馈或问题!
项目的存储库可以在这里找到:存储库
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3