
كيفية برمجة موقع مراجعة منتجات باستخدام Python Django (دليل شامل)
هل لديك شغف بالمنتجات وترغب في مشاركة آرائك مع الآخرين؟
هل تتطلع إلى تعلم كيفية برمجة موقع مراجعة منتجات باستخدام Python Django؟
في هذا الدليل الشامل، سنأخذك في رحلة خطوة بخطوة لإنشاء منصة
تفاعلية حيث يمكن للمستخدمين اكتشاف المنتجات وقراءة ومشاركة المراجعات.
سنغطي كل شيء بدءًا من تصميم واجهة مستخدم جذابة لعرض المنتجات
والمراجعات، مرورًا بتعريف نماذج البيانات لتخزين معلومات المنتجات والمراجعات،
وصولًا إلى تمكين المستخدمين من إضافة تقييماتهم و حفظ بيانات المراجعات،
وأخيرًا نشر التطبيق ليصبح متاحًا للجميع. تابع معنا لتعلم كيفية برمجة موقع مراجعة
منتجات باستخدام Python Django بكفاءة وفعالية.
خطوات برمجة موقع مراجعة منتجات
خطوات برمجة موقع مراجعة منتجات باستخدام Python Django
الخطوة 1: إعداد بيئة التطوير وإنشاء مشروع Django
* تأكد من تثبيت Python و pip على جهازك. ثم قم بتثبيت Django :
pip install django
--
* أنشئ مشروع Django جديدًا باسم product_review_site :
django-admin startproject product_review_site
cd product_review_site
--
* أنشئ تطبيقًا داخل المشروع باسم reviews :
python manage.py startapp reviews
--
الخطوة 2: تعريف نماذج البيانات (Models)
* في ملف reviews/models.py، سنقوم بتعريف نماذج
البيانات الأساسية للمنتجات والمراجعات :
Python
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
class Product(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
image = models.ImageField(upload_to='products/', blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Review(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='reviews')
user = models.ForeignKey(User, on_delete=models.CASCADE)
rating = models.IntegerField(choices=[(i, str(i)) for i in range(1, 6)])
comment = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Review by {self.user.username} for {self.product.name}"
* أضف تطبيق reviews إلى قائمة INSTALLED_APPS في
ملف product_review_site/settings.py :
Python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'reviews', # إضافة تطبيق reviews هنا
]
--
* قم بإنشاء التغييرات وتنفيذها :
python manage.py makemigrations reviews
python manage.py migrate
--
الخطوة 3: إنشاء واجهة المستخدم (Templates)
* أنشئ مجلدًا باسم templates داخل مجلد تطبيق reviews.
ثم أنشئ ملفات HTML التالية:
* reviews/templates/reviews/product_list.html:
لعرض قائمة المنتجات:
HTML
<!DOCTYPE html>
<html>
<head>
<title>قائمة المنتجات</title>
</head>
<body>
<h1>جميع المنتجات</h1>
<ul>
{% for product in products %}
<li>
<h2><a href="{% url 'product_detail' product.id %}">{{ product.name }}</a></h2>
{% if product.image %}
<img src="{{ product.image.url }}" alt="{{ product.name }}" width="100">
{% endif %}
<p>{{ product.description|truncatewords:20 }}</p>
<p>السعر: {{ product.price }}</p>
</li>
{% empty %}
<li>لا توجد منتجات متاحة حاليًا.</li>
{% endfor %}
</ul>
</body>
</html>
--
* reviews/templates/reviews/product_detail.html: لعرض تفاصيل
المنتج ومراجعاته ونموذج إضافة مراجعة:
HTML
<!DOCTYPE html>
<html>
<head>
<title>{{ product.name }}</title>
</head>
<body>
<h1>{{ product.name }}</h1>
{% if product.image %}
<img src="{{ product.image.url }}" alt="{{ product.name }}" width="200">
{% endif %}
<p>{{ product.description }}</p>
<p>السعر: {{ product.price }}</p>
<h2>مراجعات المنتج</h2>
<ul>
{% for review in product.reviews.all %}
<li>
<p>المستخدم: {{ review.user.username }}</p>
<p>التقييم: {{ review.rating }} / 5</p>
<p>{{ review.comment }}</p>
<p>تاريخ الإضافة: {{ review.created_at }}</p>
</li>
{% empty %}
<li>لا توجد مراجعات لهذا المنتج حتى الآن.</li>
{% endfor %}
</ul>
<h2>أضف مراجعتك</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">إضافة مراجعة</button>
</form>
<p><a href="{% url 'product_list' %}">العودة إلى قائمة المنتجات</a></p>
</body>
</html>
--
الخطوة 4: إنشاء النماذج (Forms)
في ملف reviews/forms.py (إذا لم يكن موجودًا، قم بإنشائه)،
سنقوم بإنشاء نموذج لإضافة المراجعات :
Python
from django import forms
from .models import Review
class ReviewForm(forms.ModelForm):
rating = forms.IntegerField(min_value=1, max_value=5)
class Meta:
model = Review
fields = ['rating', 'comment']
--
الخطوة 5: إنشاء طرق العرض (Views)
في ملف reviews/views.py، سنقوم بإنشاء طرق العرض التي
تتحكم في منطق التطبيق وتعرض القوالب :
Python
from django.shortcuts import render, get_object_or_404, redirect
from .models import Product, Review
from .forms import ReviewForm
from django.contrib.auth.decorators import login_required
def product_list(request):
products = Product.objects.all()
return render(request, 'reviews/product_list.html', {'products': products})
def product_detail(request, product_id):
product = get_object_or_404(Product, pk=product_id)
form = ReviewForm()
return render(request, 'reviews/product_detail.html', {'product': product, 'form': form})
@login_required
def add_review(request, product_id):
product = get_object_or_404(Product, pk=product_id)
if request.method == 'POST':
form = ReviewForm(request.POST)
if form.is_valid():
review = form.save(commit=False)
review.product = product
review.user = request.user
review.save()
return redirect('product_detail', product_id=product.id)
else:
form = ReviewForm()
return render(request, 'reviews/product_detail.html', {'product': product, 'form': form})
الخطوة 6: تعريف مسارات URL (URLs)
في ملف reviews/urls.py (إذا لم يكن موجودًا، قم بإنشائه) :
Python
from django.urls import path
from . import views
urlpatterns = [
path('', views.product_list, name='product_list'),
path('product/<int:product_id>/', views.product_detail, name='product_detail'),
path('product/<int:product_id>/add_review/', views.add_review, name='add_review'),
]
--
* قم بتضمين مسارات تطبيق reviews في ملف
product_review_site/urls.py :
Python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('reviews.urls')),
path('accounts/', include('django.contrib.auth.urls')), # لتسجيل الدخول والخروج
]
--
الخطوة 7: إنشاء واجهة إدارة (Django Admin)
لتسهيل إضافة وتعديل المنتجات والمراجعات، قم بتسجيل النماذج في
Django Admin في ملف reviews/admin.py :
Python
from django.contrib import admin
from .models import Product, Review
class ReviewInline(admin.TabularInline):
model = Review
extra = 1
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'created_at')
inlines = [ReviewInline]
class ReviewAdmin(admin.ModelAdmin):
list_display = ('product', 'user', 'rating', 'created_at')
list_filter = ('rating', 'product')
search_fields = ('comment', 'product__name', 'user__username')
admin.site.register(Product, ProductAdmin)
admin.site.register(Review, ReviewAdmin)
* قم بإنشاء مستخدم مسؤول إذا لم يكن لديك واحدًا بالفعل :
python manage.py createsuperuser
--
ثم قم بتشغيل خادم التطوير وقم بزيارة http://127.0.0.1:8000/admin/
لتسجيل الدخول وإدارة المنتجات والمراجعات.
الخطوة 8: حفظ النقاط (بيانات المنتجات والمراجعات)
يتم حفظ بيانات المنتجات والمراجعات تلقائيًا في قاعدة البيانات عند إنشائها
وتعديلها من خلال واجهة Django Admin أو من خلال تفاعلات
لمستخدمين مع النماذج في الواجهة الأمامية (مثل إضافة مراجعة).
Django ORM يتولى عملية التفاعل مع قاعدة البيانات وحفظ البيانات بناءً على تعريف النماذج والعلاقات بينها.
الخطوة 9: نشر التطبيق
لنشر تطبيق Django، يمكنك اتباع الخطوات العامة التالية
(باستخدام Gunicorn و Nginx كمثال):
* تثبيت Gunicorn:
pip install gunicorn
--
* اختبار Gunicorn: انتقل إلى مجلد مشروع Django وقم بتشغيل:
gunicorn product_review_site.wsgi:application
--
* تثبيت Nginx:
sudo apt update
sudo apt install nginx
--
* تكوين Nginx: قم بإنشاء ملف تكوين جديد للموقع الخاص بك في /etc/nginx/sites-available/ (مثل product_review_site) وقم بربطه بـ /etc/nginx/sites-enabled/. مثال على التكوين:
Nginx
server {
listen 80;
server_name your_domain_or_IP;
location /static/ {
alias /path/to/your/project/staticfiles/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
--
* استبدل your_domain_or_IP بعنوان نطاقك أو عنوان IP الخاص بالخادم، و
/path/to/your/project/staticfiles/ بالمسار الفعلي لمجلد الملفات الثابتة الخاص بك.
* جمع الملفات الثابتة: قبل النشر، قم بجمع الملفات الثابتة باستخدام:
python manage.py collectstatic
--
* تكوين نظام إدارة العمليات (مثل systemd) لتشغيل Gunicorn تلقائيًا.
* إعادة تشغيل Nginx:
sudo systemctl restart nginx
--
تأمين الخادم الخاص بك (مثل إعداد جدار حماية وتكوين HTTPS باستخدام Let's Encrypt).
الخلاصة:
لقد استعرضنا الخطوات الأساسية لبرمجة موقع مراجعة منتجات بسيط
باستخدام Python Django، بدءًا من إنشاء واجهة المستخدم لعرض المنتجات
والمراجعات، مرورًا بتعريف نماذج البيانات و النماذج لتمكين المستخدمين
من إضافة المراجعات، وصولًا إلى حفظ هذه البيانات في قاعدة البيانات وتقديم
نظرة عامة على عملية نشر التطبيق. يمكنك الآن توسيع هذا النظام بإضافة
المزيد من الميزات مثل تقييمات المستخدمين، وتصنيفات المنتجات،
ووظائف البحث والتصفية، والمزيد. Django يوفر لك إطار عمل قويًا
ومرنًا لبناء تطبيقات ويب تفاعلية وغنية بالميزات.