В этом руководстве я расскажу вам, как создать безопасную систему анонимной обратной связи с использованием Django, Twilio для SMS-уведомлений, Pinata для безопасной загрузки мультимедиа и TailwindCSS для адаптивного стиля. К концу этого руководства у вас будет полнофункциональная система обратной связи, где пользователи смогут оставлять отзывы, при необходимости загружать медиафайлы и получать SMS-уведомления — и все это с учетом безопасности и конфиденциальности.
Демо: живая ссылка
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. Создайте представления для обработки отзывов и SMS-уведомлений
В файле Feedback/views.py создайте представления для обработки отзывов и отправки 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')
Это представление обрабатывает отправку форм, загружает дополнительные медиафайлы в Pinata и отправляет SMS с помощью Twilio.
2.3. Создание формы обратной связи
Создайте HTML-форму для отправки отзыва. В папке шаблонов создайте Feedback_form.html:
{% load static %}Submit Feedback Submit Feedback
Изображение внешнего интерфейса
Изображение панели управления Pinata, на которой показаны загруженные файлы
3.1. Настройка переменных среды
Создайте файл .env в корневом каталоге вашего проекта для хранения конфиденциальной информации, такой как ключи API Twilio и 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
Обязательно добавьте .env в свой файл .gitignore, чтобы он не был отправлен на GitHub:
.env
3.2. Обновите файл settings.py, чтобы использовать переменные среды
Используйте python-decouple для безопасной загрузки переменных среды из файла .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 для SMS-уведомлений и Pinata для загрузки мультимедиа. Вы также узнали, как разместить свой проект на GitHub и защитить конфиденциальную информацию с помощью переменных среды. Эта система обеспечивает конфиденциальность, позволяя пользователям оставлять отзывы и получать SMS-уведомления.
Не стесняйтесь расширять систему, добавляя дополнительные функции или повышая безопасность. Если это руководство показалось вам полезным, поделитесь своими отзывами или вопросами в комментариях!
Репозиторий проекта можно найти здесь: Repo
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3