08 Django ই কমার্স সাইট ডিজাইন

০৯ GUIDE 9: ই কমার্স সাইট ডিজাইন

০১ মডিউল ০১: ডিজাইন ও ডাটা স্ট্রাকচার

01 Config Project and Apps

প্রথমত,

ধাপ ১: স্টার্টিং ম্যান্ডেটরি ধাপ/কাজগুলো[এনভায়রনমেন্ট সেটাপ]

  1. Desktop > ECommerce Django ডিরেক্টরি/ফোল্ডারে, কমান্ড কোড দিন

    python -m venv

  2. source bin/activate
  3. pip install django
  4. django-admin startproject config (তাহলে config নামে একটি ফোল্ডার(প্রজেক্ট) তৈরি হবে, যে ফোল্ডার এর ভিতর manage.py ফাইল থাকবে এবং config নামে আরও একটি ফোল্ডার তৈরি হবে) [এখন সব ঠিকঠাক আছে কিনা তা চেক করতে চাইলে প্রজেক্ট সার্ভার রান করার কমান্ডো দিন:  python manage.py runserver ব্যাস,এখন http://127.0.0.1:8000 এ ঢুকলেই দেখবে যে django সাকসেসফুলি রান হয়ে প্রজেক্ট স্টার্ট হবে.]
  5. config ফোল্ডারের(প্রজেক্টের) নাম চেঞ্জ করে src করা
  6. cd src
  7. python manage.py startapp ecom [code . কমান্ডের মাধ্যমে vscode ওপেন করা ]
  8. src(প্রজেক্ট)এর ভেতর templates নামে একটা ফোল্ডার ক্রিয়েট করব, যেখানে home.html ফাইলে টেমপ্লেট তৈরি করব। (এই টেমপ্লেটটি-ই পরবর্তীতে আমরা ইউজ করব।)
  9. src(প্রজেক্ট) এর ভেতর static নামে আরো একটা ফোল্ডার ক্রিয়েট করব, যেখানে css ও image নামে আরো দুইটি ফোল্ডার তৈরি করব ওইসব রাখার জন্য। 
  10. এছাড়াও, src>templates ফোল্ডারের ভিতর ecom নামে আরো একটি ফোল্ডার তৈরি করে সেখানে store.html, cart.html ও checkout.html নামে তিনটা ফাইল তৈরি করব।

*** প্রত্যেকটা এইচটিএমএল ফাইলের ভিতরে একটা করে h1 হেডিং টাইটেল যুক্ত করব যাতে ফাইলটি রান করলে দেখতে সুবিধা হয়।

দ্বিতীয়ত,

ধাপ ০২: ব্যাসিক কনফিগারেশন & বেসিক টেস্টিং

➡️# src > config > settings.py ফাইল সেটিংঃ Installed Apps লিস্টের শেষে (৩৩ নং লাইনে) “ecom” নামে এপস এর নাম যুক্ত করে দেব। এবং templates লিস্ট (৫৮ নং লাইনে) Dir এর ভিতরে লিখুন BASE_DIR / ‘templates’ ।  

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'ecom', # এই লাইন নতুন ভাবে যুক্ত করা হয়েছে 
]
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

➡️# এরপর, src > ecom > views.py ফাইল যে কোন আইডিএলই যেমন- vscode এ খুলুন । লিখুন-

from django.shortcuts import render

# Create your views here.

def store(request):
    context = {}
    return render(request,'ecom/store.html', context)

def cart(request):
context = {}
return render(request,'ecom/cart.html', context)

def checkout(request):
context = {}
return render(request,'ecom/checkout.html', context)

 

➡️# src/config/urls.py ফাইলে গিয়ে path এর পর কমা দিয়ে include লেখাটুকু যুক্ত করুন(/ফাংশনকে ইম্পোর্ট করুন) ।

আর, urlpattern লিস্টে নিচে নতুন করে আপাদত যুক্ত করব- path(”, include(‘blog.urls’)) । [এখানে ecom হচ্ছে এপস এর নাম আর urls হচ্ছে সেখানকার ফাংশনের নাম।]

তাহলে, urls.py ফাইলটা (১)আপডেট করায় নিম্নরূপ/এমন হবে-

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('ecom.urls'))
]

 

➡️# এখন, এপ্স এর ভিতর অর্থাৎ src > ecom ফোল্ডার এর ভেতর urls.py নামে একটি ফাইল তৈরী করে নেব। যা নিম্নরূপ/এমন হবে–

from django.urls import path
from . import views

urlpatterns = [
    path('', views.store, name = 'store' ),
    path('cart/', views.cart, name = 'cart' ),
    path('checkout/', views.checkout, name = 'checkout' ),
]

 

➡️# এবার সার্ভার রান করে কি হয় দেখতে পারব। –

python manage.py runserver

((( মাইগ্রেশন করার দরকার পড়লে, সার্ভার রান করার আগে নিম্নোক্ত কম্যান্ড কোড দিয়ে মাইগ্রেশন করে নেব-

python manage.py makemigrations 
python manage.py migrate

)))

ব্যাস এখন থেকে প্রজেক্ট সার্ভার রান পর কি কোন পেজ যেমন localhost:8000/cart বা http://127.0.0.1:8000/cart এ ঢুকলেই দেখবে যে django সাকসেসফুলি রান হয়ে প্রজেক্ট স্টার্ট হবে। 

 

ধাপ ০৩:  d

02 Inheriting Main Template + 03 Design Main Template + 04 Design Store Template

এখন আমার স্ট্যাটিক ফাইলগুলোকে config করে নিব। এজন্য static > css ফোল্ডারের ভেতর style.css নামে একটি ফাইল তৈরি করব। এখন, style.css এ আপাদত টেস্টিং এর জন্য উদাহরণস্বরূপ লিখব-

body{
backgroud-color: antiquewhite;
}

এবং store.html এ গিয়ে আপাদত টেস্টিং এর জন্য উদাহরণস্বরূপ লিখব-

{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}
<h1>Store</h1>
<img src="{%static images/cart.png %}" alt="">

এখন, src> config > settings.py এ যেখানে STATIC_URL আছে সেখানের নিচের লাইনে লিখব-

STATICFILES_DIRS = [
    BASE_DIR / 'static'
]

আবার,

src>templates এর ভেতর base নামে আরও একটি ফোল্ডার তৈরি করব যেখানে main.html নামে ফাইল ক্রিয়েট করব। সেখানে boostrap থেকে কোড কপি করে এডিট করে নিম্নরূপ কোড লিখব-

{% load static %}
<!DOCTYPE html>
<html lang="en">

<head>
    <metacharset="UTF-8">
    <metahttp-equiv="X-UA-Compatible"content="IE=edge">
    <metaname="viewport"content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> 
    <link rel="stylesheet" href="{% static 'css/style.css' %}
    <title>E Com Store</title>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  <div class="container">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="{% url 'store' %}">Store</a>
        </li>

      </ul>

        <div class="form-inline my-2 my-lg-0">
            < a href="" class="btn btn-warning">login</a>
            <a href="{% url 'cart' %}"
            <img src="{% static 'images/cart.png' %} alt="" id="cart-icon"
            </a>
        </div>
            <p id="cart-total">0</p>  
    </div>
  </div>
</nav>

    {% block content %}
    {% endblock content %}

 <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> 
</body>
</html>

 

ফাইনালি, style.css এর লেখা গুলো কেটে store.html এ গিয়ে (আগের লেখা সব কেটে) নতুন করে লিখব-

{% extends 'base/main.html' %}
{% load static %}
{% block content %}

<div class="container">
    <div class="row">
        <div class="col-lg-4">
            <img src="https://placehold.co/650x350" alt="" class="thumbnail">
            <div class="box-element.product"</div>
                <h2 class="h6">Product</h2>
                <button class="btn btn-outline-secondary add-btn">Add to cart</button>
                <a href=""#" class="btn btn-outline-success">View</a>
                <h4 style="display: inline-block; float: right">$20</h4>
        </div>

        <div class="col-lg-4">
<img src="https://placehold.co/650x350" alt="" class="thumbnail"> <div class="box-element.product"</div>
<h2 class="h6">Product</h2>
<button class="btn btn-outline-secondary add-btn">Add to cart</button>
<a href=""#" class="btn btn-outline-success">View</a>
<h4 style="display: inline-block; float: right">$20</h4>
        </div>

        <div class="col-lg-4">
<img src="https://placehold.co/650x350" alt="" class="thumbnail"> <div class="box-element.product"</div>
<h2 class="h6">Product</h2>
<button class="btn btn-outline-secondary add-btn">Add to cart</button>
<a href=""#" class="btn btn-outline-success">View</a>
<h4 style="display: inline-block; float: right">$20</h4>
        </div>

{% endblock content %}

 

05 Design Cart Page

এখন, cart.html এ,

{% extends 'base/main.html' %}
{% load static %}
{% block content %}

{% endblock content %}

 

06 Design Checkout Page Part 1

এখন,

07 Design Checkout Page Part 2

এখন,

08 Data Structure for Product

এখন,

০২ মডিউল ২ঃই-কমার্স সাইট ফাংশনালিটি

12 Rendering Cart Page Part 1

13 Get Items Total , Total with Property Decorators

14 Rendering Checkout Page

14.5 Fixing Error for non Logged in Users

15 Add to Cart JS Link and Add Event Handler

16 Check User is Authenticated or Not in JS

17 Sending Data To Server through JS Fetch Part 1

18 Add To Cart function Sending Data To Server JS Fetch Method Part 2

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *