搜尋
首頁後端開發Python教學使用 Django、Twilio 和 Pinata 建立安全的匿名回饋系統

在本指南中,我將引導您使用 Django、用於簡訊通知的 Twilio、用於安全媒體上傳的 Pinata 以及用於響應式樣式的 TailwindCSS 建立安全匿名回饋系統。在本教程結束時,您將擁有一個功能齊全的反饋系統,用戶可以在其中提交反饋、選擇上傳媒體以及接收短信通知 - 所有這些都考慮到安全和隱私。

示範:即時連結

主要特點:

  • 匿名回饋提交:使用者可以匿名提交回饋或支援請求。
  • 安全媒體上傳:使用者可以透過 Pinata 安全上傳儲存在 IPFS 上的媒體檔案。
  • Twilio 簡訊通知:透過 Twilio 自動向使用者發送簡訊確認。
  • 響應式 UI:採用 TailwindCSS 設計,實現無縫、現代的設計。

使用的技術:

  • Django:回饋系統的後端框架。
  • Twilio:處理簡訊通知。
  • 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。建立用於處理回饋和簡訊通知的視圖
在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 %}



    <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">


    <div class="container mx-auto px-4 py-6">
        <h1 id="Submit-Feedback">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>




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 檔案來儲存 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')


第四步:推送到GitHub

4.1。初始化Git並推送到GitHub

  1. 在專案根目錄中初始化 Git 儲存庫:

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


  1. 將您的 GitHub 儲存庫新增為遠端倉庫並推送您的專案:

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




結論

在本教程中,您使用 Django、用於簡訊通知的 Twilio 和用於媒體上傳的 Pinata 建立了一個安全的匿名回饋系統。您還了解如何將專案推送到 GitHub 並使用環境變數保護敏感資訊。該系統確保隱私,同時使用戶能夠提交回饋和接收簡訊通知。

您可以透過增加更多功能或增強安全性來進一步擴展系統。如果您發現本指南有幫助,請在評論中分享您的回饋或問題!

專案的儲存庫可以在這裡找到:Repo

以上是使用 Django、Twilio 和 Pinata 建立安全的匿名回饋系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
我如何使用美麗的湯來解析HTML?我如何使用美麗的湯來解析HTML?Mar 10, 2025 pm 06:54 PM

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

如何解決Linux終端中查看Python版本時遇到的權限問題?如何解決Linux終端中查看Python版本時遇到的權限問題?Apr 01, 2025 pm 05:09 PM

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

Python中的數學模塊:統計Python中的數學模塊:統計Mar 09, 2025 am 11:40 AM

Python的statistics模塊提供強大的數據統計分析功能,幫助我們快速理解數據整體特徵,例如生物統計學和商業分析等領域。無需逐個查看數據點,只需查看均值或方差等統計量,即可發現原始數據中可能被忽略的趨勢和特徵,並更輕鬆、有效地比較大型數據集。 本教程將介紹如何計算平均值和衡量數據集的離散程度。除非另有說明,本模塊中的所有函數都支持使用mean()函數計算平均值,而非簡單的求和平均。 也可使用浮點數。 import random import statistics from fracti

python對象的序列化和避難所化:第1部分python對象的序列化和避難所化:第1部分Mar 08, 2025 am 09:39 AM

Python 對象的序列化和反序列化是任何非平凡程序的關鍵方面。如果您將某些內容保存到 Python 文件中,如果您讀取配置文件,或者如果您響應 HTTP 請求,您都會進行對象序列化和反序列化。 從某種意義上說,序列化和反序列化是世界上最無聊的事情。誰會在乎所有這些格式和協議?您想持久化或流式傳輸一些 Python 對象,並在以後完整地取回它們。 這是一種在概念層面上看待世界的好方法。但是,在實際層面上,您選擇的序列化方案、格式或協議可能會決定程序運行的速度、安全性、維護狀態的自由度以及與其他系

如何使用TensorFlow或Pytorch進行深度學習?如何使用TensorFlow或Pytorch進行深度學習?Mar 10, 2025 pm 06:52 PM

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的

用美麗的湯在Python中刮擦網頁:搜索和DOM修改用美麗的湯在Python中刮擦網頁:搜索和DOM修改Mar 08, 2025 am 10:36 AM

該教程建立在先前對美麗湯的介紹基礎上,重點是簡單的樹導航之外的DOM操縱。 我們將探索有效的搜索方法和技術,以修改HTML結構。 一種常見的DOM搜索方法是EX

哪些流行的Python庫及其用途?哪些流行的Python庫及其用途?Mar 21, 2025 pm 06:46 PM

本文討論了諸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和請求等流行的Python庫,並詳細介紹了它們在科學計算,數據分析,可視化,機器學習,網絡開發和H中的用途

如何使用Python創建命令行接口(CLI)?如何使用Python創建命令行接口(CLI)?Mar 10, 2025 pm 06:48 PM

本文指導Python開發人員構建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等庫詳細介紹,強調輸入/輸出處理,並促進用戶友好的設計模式,以提高CLI可用性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具