"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > بناء نظام ملاحظات آمن مجهول باستخدام Django وTwilio وPinata

بناء نظام ملاحظات آمن مجهول باستخدام Django وTwilio وPinata

تم النشر بتاريخ 2024-11-06
تصفح:448

في هذا الدليل، سأرشدك عبر إنشاء نظام تعليقات مجهول المصدر باستخدام Django، وTwilio لإشعارات الرسائل القصيرة، وPinata لتحميلات الوسائط الآمنة، وTailwindCSS للتصميم سريع الاستجابة. بحلول نهاية هذا البرنامج التعليمي، سيكون لديك نظام تعليقات يعمل بكامل طاقته حيث يمكن للمستخدمين إرسال التعليقات وتحميل الوسائط بشكل اختياري وتلقي إشعارات الرسائل القصيرة - كل ذلك مع وضع الأمان والخصوصية في الاعتبار.

عرض توضيحي: رابط مباشر

الميزات الرئيسية:

  • تقديم تعليقات مجهولة المصدر: يمكن للمستخدمين إرسال تعليقات أو طلبات دعم بشكل مجهول.
  • تحميلات الوسائط الآمنة: يمكن للمستخدمين تحميل ملفات الوسائط بشكل آمن عبر Pinata، المخزنة على IPFS.
  • إشعارات Twilio SMS: إرسال تأكيد عبر الرسائل القصيرة تلقائيًا إلى المستخدمين عبر Twilio.
  • واجهة مستخدم سريعة الاستجابة: تم تصميمها باستخدام TailwindCSS للحصول على تصميم عصري سلس.

التقنيات المستخدمة:

  • جانغو: إطار عمل خلفي لنظام التغذية الراجعة.
  • Twilio: يتعامل مع إشعارات الرسائل القصيرة.
  • بيناتا: يوفر تخزينًا آمنًا للوسائط يعتمد على 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-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. إنشاء طرق عرض للتعامل مع الملاحظات وإشعارات الرسائل القصيرة
في ردود الفعل/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

{% 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 في الدليل الجذر لمشروعك لتخزين المعلومات الحساسة مثل مفاتيح 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-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: الدفع إلى جيثب

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 لإشعارات الرسائل القصيرة، وPinata لتحميلات الوسائط. لقد تعلمت أيضًا كيفية دفع مشروعك إلى GitHub وتأمين المعلومات الحساسة باستخدام متغيرات البيئة. يضمن هذا النظام الخصوصية مع تمكين المستخدمين من إرسال الملاحظات وتلقي إشعارات الرسائل القصيرة.

لا تتردد في توسيع النظام بشكل أكبر عن طريق إضافة المزيد من الميزات أو تعزيز الأمان. إذا وجدت هذا الدليل مفيدًا، شارك بتعليقاتك أو أسئلتك في التعليقات!

يمكن العثور على الريبو للمشروع هنا: 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