«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Создание безопасной системы анонимной обратной связи с помощью Django, Twilio и Pinata

Создание безопасной системы анонимной обратной связи с помощью Django, Twilio и Pinata

Опубликовано 6 ноября 2024 г.
Просматривать:286

В этом руководстве я расскажу вам, как создать безопасную систему анонимной обратной связи с использованием Django, Twilio для SMS-уведомлений, Pinata для безопасной загрузки мультимедиа и TailwindCSS для адаптивного стиля. К концу этого руководства у вас будет полнофункциональная система обратной связи, где пользователи смогут оставлять отзывы, при необходимости загружать медиафайлы и получать SMS-уведомления — и все это с учетом безопасности и конфиденциальности.

Демо: живая ссылка

Ключевые особенности:

  • Анонимная отправка отзывов: пользователи могут отправлять отзывы или запросы в службу поддержки анонимно.
  • Безопасная загрузка мультимедиа: пользователи могут безопасно загружать медиафайлы через Pinata, хранящиеся в IPFS.
  • Уведомления Twilio по SMS: автоматически отправляет SMS-подтверждение пользователям через Twilio.
  • Адаптивный пользовательский интерфейс: стиль TailwindCSS обеспечивает цельный современный дизайн.

Используемые технологии:

  • Django: бэкэнд-фреймворк для системы обратной связи.
  • Twilio: обрабатывает SMS-уведомления.
  • Pinata: обеспечивает безопасное хранилище мультимедиа на основе IPFS.
  • TailwindCSS: для адаптивного оформления интерфейса.

Шаг 1: Настройка проекта и зависимости

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. Создайте систему отправки отзывов

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

{% csrf_token %}

Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata
Изображение внешнего интерфейса

Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata
Изображение панели управления Pinata, на которой показаны загруженные файлы

Шаг 3. Настройка Twilio и 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. Публикация на GitHub

4.1. Инициализируйте Git и отправьте его на GitHub

  1. Инициализируйте репозиторий Git в корне вашего проекта:

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


  1. Добавьте свой репозиторий GitHub в качестве удаленного и опубликуйте свой проект:

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




Заключение

В этом руководстве вы создали безопасную анонимную систему обратной связи, используя Django, Twilio для SMS-уведомлений и Pinata для загрузки мультимедиа. Вы также узнали, как разместить свой проект на GitHub и защитить конфиденциальную информацию с помощью переменных среды. Эта система обеспечивает конфиденциальность, позволяя пользователям оставлять отзывы и получать SMS-уведомления.

Не стесняйтесь расширять систему, добавляя дополнительные функции или повышая безопасность. Если это руководство показалось вам полезным, поделитесь своими отзывами или вопросами в комментариях!

Репозиторий проекта можно найти здесь: Repo

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/chidoziemanagwu/building-a-secure-anonymous-feedback-system-with-django-twilio-and-pinata-4bh?1 Если есть какие-либо нарушения, свяжитесь с Study_golang. @163.com удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3