ساخت Snapp food Clone 🍔 _ بخش اول

با سلام

در این پست از تجربه شخصی خودم از ساخت یک نسخه clone از اسنپ فود توضیح می دم.

Snapp food clone
Snapp food clone


برای ساخت این clone من از دو تکنولوژی زیر استفاده می کنم برای back end از Django rest framework و برای front end از React.js استفاده می کنم.

آیکون  اسنپ فود
آیکون اسنپ فود

در ابتدا باید سراغ back end برویم ، پیشنهاد من برای ساخت سریع back end برای rest api فریم ورک

Django rest framework

است این فریم ورک بسیار سبک و راحت هست و می توانید خیلی راحت و سریع یک api بسازید.


در ادامه به ساخت این clone به صورت گام به گام می پردازیم.

گام اول: ساخت back end

در ابتدا با دستور زیر یک پروژه django rest framework می سازیم.

pip install djangorestframework

سپس دستور زیر را در settings.py اضافه کنید

INSTALLED_APPS = [
...
'rest_framework',
]

سپس در فایل urls.py کد زیر را اضافه می کنیم

urlpatterns = [
...
path('api-auth/', include('rest_framework.urls'))
]

در مرحله بعد ساختار فایل ها و پوشه ها باید به صورت زیر باشد

Back end structures
Back end structures

در تصویر بالا ساختار فایل های back end را مشاهده می کنید

در مرحله بعد یک app بسازید با نام snappApi

برای ساخت app می توانید از دستور زیر استفاده کنید

python manage.py startapp snappApi

استفاده کنید


گام دوم : ساخت مدل models

در مرحله بعد به بررسی ساخت مدل های برنامه می پردازیم

داخل فایل models.py مدل های زیر را اضافه کنید

from django.db import models
# Create your models here.
class City(models.Model):
    title = models.CharField(max_length=150)
    def __str__(self):
        return self.title
    class Meta:
        db_table = &quotCity&quot
class User(models.Model):
    username = models.CharField(max_length=150)
    password = models.CharField(max_length=150)
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    def __str__(self):
        return self.username
    class Meta:
        db_table = &quotUser&quot
class Category(models.Model):
    title = models.CharField(max_length=150)
    iconUrl = models.TextField()
    def __str__(self):
        return self.title
    class Meta:
        db_table = &quotCategory&quot
class Food(models.Model):
    title = models.CharField(max_length=150)
    price = models.DecimalField(decimal_places=0, max_digits=10)
    bannerUrl = models.TextField()
    def __str__(self):
        return self.title
    class Meta:
        db_table = &quotFood&quot
class ShopsFood(models.Model):
    title = models.CharField(max_length=150)
    rank = models.FloatField(max_length=50)
    bannerUrl = models.TextField()
    iconUrl = models.TextField()
    category = models.OneToOneField(Category, on_delete=models.CASCADE)
    city = models.OneToOneField(City, on_delete=models.CASCADE)
    Foods = models.ManyToManyField(Food)
    def __str__(self):
        return self.title
    class Meta:
        db_table = &quotShopsFood&quot

در بالا مدل های User , food , shopfood ,city, category را ساختیم

نکته : می توانید به جای ساخت مدل جدید user از مدل پیشفرض django استفاده کنید


گام سوم : migration

در ابن مرحله مدل ها را migrate می کنید

ابتدا باید یک super user بسازید که از دستور زیر استفاده کنید

python manage.py createsuperuser


در مرحله بعد باید migration را بسازید

با دستور زیر می توانید بسازید

python manage.py makemigrations

و در مرحله بعد باید migration را روی database مورد نظر اجرا کنید

با استفاده از دستور زیر می توانید اجرا کنید

python manage.py migrate


نکته : بنده از پایگاه داده پیشفرض django استفاده کردم که sqlite است شما می توانید از postgresql یا mysql استفاده کنید


ادامه مبحث در بخش ۲