పైథాన్లో ఇ-కామర్స్ అప్లికేషన్ కోసం షాపింగ్ కార్ట్ సిస్టమ్ను ఎలా అమలు చేయాలో నేర్చుకోండి, డేటా స్ట్రక్చర్లు, సెషన్ నిర్వహణ మరియు ప్రాక్టికల్ పరిశీలనలను కవర్ చేయండి.
పైథాన్ ఇ-కామర్స్: పటిష్టమైన షాపింగ్ కార్ట్ నిర్మించడం
నేటి డిజిటల్ ల్యాండ్స్కేప్లో, ఇ-కామర్స్ ప్లాట్ఫారమ్లు సర్వత్రా ఉన్నాయి. ఏదైనా విజయవంతమైన ఆన్లైన్ స్టోర్ యొక్క ప్రాథమిక భాగం చక్కగా రూపొందించబడిన మరియు అమలు చేయబడిన షాపింగ్ కార్ట్. ఈ బ్లాగ్ పోస్ట్ పైథాన్లో పటిష్టమైన షాపింగ్ కార్ట్ సిస్టమ్ను రూపొందించే ప్రక్రియ ద్వారా మీకు మార్గనిర్దేశం చేస్తుంది, అవసరమైన భావనలు మరియు ప్రాక్టికల్ పరిశీలనలను కవర్ చేస్తుంది.
ఇ-కామర్స్ కోసం పైథాన్ ఎందుకు?
పైథాన్ ఇ-కామర్స్ డెవలప్మెంట్ కోసం అనేక ప్రయోజనాలను అందిస్తుంది:
- సరళత మరియు రీడబిలిటీ: పైథాన్ యొక్క స్వచ్ఛమైన సింటాక్స్ నేర్చుకోవడం మరియు నిర్వహించడం సులభం చేస్తుంది.
- విస్తృతమైన లైబ్రరీలు మరియు ఫ్రేమ్వర్క్లు: జాంగో మరియు ఫ్లాస్క్ వంటి ఫ్రేమ్వర్క్లు వెబ్ అప్లికేషన్లను త్వరగా మరియు సమర్ధవంతంగా నిర్మించడానికి శక్తివంతమైన సాధనాలను అందిస్తాయి. SQLAlchemy మరియు psycopg2 వంటి లైబ్రరీలు డేటాబేస్ ఇంటరాక్షన్లను సులభతరం చేస్తాయి.
- పెద్ద కమ్యూనిటీ మద్దతు: శక్తివంతమైన కమ్యూనిటీ డెవలపర్ల కోసం విస్తారమైన వనరులు, ట్యుటోరియల్స్ మరియు మద్దతును అందిస్తుంది.
- స్కేలబిలిటీ: పైథాన్ను పెద్ద మొత్తంలో ట్రాఫిక్ మరియు డేటాను నిర్వహించడానికి స్కేల్ చేయవచ్చు, ఇది అభివృద్ధి చెందుతున్న ఇ-కామర్స్ వ్యాపారాలకు అనుకూలంగా ఉంటుంది.
షాపింగ్ కార్ట్ యొక్క ప్రధాన భాగాలు
షాపింగ్ కార్ట్ సిస్టమ్ సాధారణంగా ఈ క్రింది కీలక భాగాలను కలిగి ఉంటుంది:
- డేటా స్ట్రక్చర్: కార్ట్ యొక్క కంటెంట్లను (వస్తువులు, పరిమాణాలు, ధరలు) సూచిస్తుంది.
- సెషన్ నిర్వహణ: ప్రతి వినియోగదారు కోసం కార్ట్ డేటాను నిల్వ చేస్తుంది.
- వస్తువులను జోడించడం: కార్ట్కు ఉత్పత్తులను జోడించడాన్ని నిర్వహిస్తుంది.
- పరిమాణాలను నవీకరించడం: వినియోగదారులు వస్తువుల పరిమాణాలను సవరించడానికి అనుమతిస్తుంది.
- వస్తువులను తీసివేయడం: వినియోగదారులు కార్ట్ నుండి వస్తువులను తీసివేయడానికి వీలు కల్పిస్తుంది.
- మొత్తాలను లెక్కించడం: సబ్ టోటల్, పన్నులు మరియు షిప్పింగ్ ఖర్చులను లెక్కించడం.
- స్థిరత్వం (ఐచ్ఛికం): తర్వాత తిరిగి పొందడానికి డేటాబేస్లో కార్ట్ డేటాను నిల్వ చేయడం.
ఫ్రేమ్వర్క్ను ఎంచుకోవడం: ఫ్లాస్క్ వర్సెస్ జాంగో
అమలులోకి ప్రవేశించే ముందు, రెండు ప్రసిద్ధ పైథాన్ వెబ్ ఫ్రేమ్వర్క్ల గురించి క్లుప్తంగా చర్చిద్దాం:
- ఫ్లాస్క్: వశ్యత మరియు నియంత్రణను అందించే మైక్రోఫ్రేమ్వర్క్. ఇది చిన్న ప్రాజెక్ట్లకు లేదా మీకు చక్కటి నియంత్రణ అనుకూలీకరణ అవసరమైనప్పుడు అనువైనది.
- జాంగో: ORM, ప్రమాణీకరణ మరియు అడ్మిన్ ప్యానెల్ వంటి అంతర్నిర్మిత లక్షణాలను అందించే పూర్తి-ఫీచర్డ్ ఫ్రేమ్వర్క్. ఇది పెద్ద, మరింత సంక్లిష్టమైన ప్రాజెక్ట్లకు బాగా సరిపోతుంది.
సరళత కోసం, మేము ఈ ఉదాహరణలో ఫ్లాస్క్ను ఉపయోగిస్తాము. అయితే, భావనలను జాంగో లేదా ఇతర ఫ్రేమ్వర్క్లకు సులభంగా స్వీకరించవచ్చు.
ఫ్లాస్క్తో షాపింగ్ కార్ట్ను అమలు చేయడం
ఫ్లాస్క్ని ఉపయోగించి ప్రాథమిక షాపింగ్ కార్ట్ను సృష్టిద్దాం. మేము ఈ క్రింది దశలను కవర్ చేస్తాము:
- ఫ్లాస్క్ అప్లికేషన్ను సెటప్ చేయడం
- కార్ట్ కోసం డేటా స్ట్రక్చర్ను నిర్వచించడం
- సెషన్ నిర్వహణను అమలు చేయడం
- వస్తువులను జోడించడం, నవీకరించడం మరియు తీసివేయడం కోసం మార్గాలను సృష్టించడం
- కార్ట్ కంటెంట్లను ప్రదర్శించడం
1. ఫ్లాస్క్ అప్లికేషన్ను సెటప్ చేయడం
ముందుగా, ఫ్లాస్క్ను ఇన్స్టాల్ చేయండి:
pip install Flask
`app.py` అనే ఫైల్ను సృష్టించి, ఈ క్రింది కోడ్ను జోడించండి:
from flask import Flask, render_template, session, redirect, url_for, request
app = Flask(__name__)
app.secret_key = 'your_secret_key'
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
ఈ కోడ్ ఫ్లాస్క్ అప్లికేషన్ను ప్రారంభిస్తుంది మరియు సెషన్ నిర్వహణ కోసం రహస్య కీని సెట్ చేస్తుంది. ముఖ్యమైనది: ఉత్పత్తి వాతావరణంలో బలమైన, యాదృచ్ఛికంగా రూపొందించబడిన కీతో `'your_secret_key'` ను భర్తీ చేయండి.
2. కార్ట్ కోసం డేటా స్ట్రక్చర్ను నిర్వచించడం
మేము కార్ట్ను ఒక డిక్షనరీగా సూచిస్తాము, ఇక్కడ కీలు ఉత్పత్తి IDలు మరియు విలువలు పరిమాణాలు. ఈ డిక్షనరీ వినియోగదారు సెషన్లో నిల్వ చేయబడుతుంది.
3. సెషన్ నిర్వహణను అమలు చేయడం
ఫ్లాస్క్ వినియోగదారు-నిర్దిష్ట డేటాను నిల్వ చేయడానికి సెషన్లను ఉపయోగిస్తుంది. మేము `session` ని ఉపయోగించి సెషన్ వస్తువును యాక్సెస్ చేయవచ్చు.
4. కార్ట్ కార్యకలాపాల కోసం మార్గాలను సృష్టించడం
కార్ట్కు వస్తువులను జోడించడం, నవీకరించడం మరియు తీసివేయడం కోసం మార్గాలను సృష్టిద్దాం.
కార్ట్కు వస్తువులను జోడించడం
@app.route('/add/')
def add_to_cart(product_id):
if 'cart' not in session:
session['cart'] = {}
cart = session['cart']
if product_id in cart:
cart[product_id] += 1
else:
cart[product_id] = 1
session['cart'] = cart
return redirect(url_for('show_cart'))
ఈ మార్గం కార్ట్కు ఒక ఉత్పత్తిని జోడిస్తుంది. కార్ట్ సెషన్లో లేకుంటే, అది కొత్త కార్ట్ను సృష్టిస్తుంది. ఉత్పత్తి ఇప్పటికే కార్ట్లో ఉంటే, అది పరిమాణాన్ని పెంచుతుంది; లేకపోతే, అది 1 పరిమాణంతో ఉత్పత్తిని జోడిస్తుంది.
వస్తువుల పరిమాణాలను నవీకరించడం
@app.route('/update/', methods=['POST'])
def update_cart(product_id):
if 'cart' in session:
cart = session['cart']
quantity = int(request.form['quantity'])
if quantity > 0:
cart[product_id] = quantity
else:
del cart[product_id]
session['cart'] = cart
return redirect(url_for('show_cart'))
ఈ మార్గం కార్ట్లో ఉత్పత్తి యొక్క పరిమాణాన్ని నవీకరిస్తుంది. ఇది ఫారమ్ డేటా నుండి పరిమాణాన్ని పొందుతుంది. పరిమాణం 0 కంటే ఎక్కువగా ఉంటే, అది కార్ట్ను నవీకరిస్తుంది; లేకపోతే, అది కార్ట్ నుండి ఉత్పత్తిని తీసివేస్తుంది.
కార్ట్ నుండి వస్తువులను తీసివేయడం
@app.route('/remove/')
def remove_from_cart(product_id):
if 'cart' in session:
cart = session['cart']
if product_id in cart:
del cart[product_id]
session['cart'] = cart
return redirect(url_for('show_cart'))
ఈ మార్గం కార్ట్ నుండి ఉత్పత్తిని తీసివేస్తుంది. ఉత్పత్తి కార్ట్లో ఉంటే, అది దానిని తీసివేస్తుంది.
5. కార్ట్ కంటెంట్లను ప్రదర్శించడం
కార్ట్ కంటెంట్లను ప్రదర్శించడానికి ఒక మార్గాన్ని సృష్టిద్దాం.
@app.route('/cart')
def show_cart():
if 'cart' not in session:
session['cart'] = {}
cart = session['cart']
# Sample product data (replace with your database)
products = {
1: {'name': 'Product A', 'price': 20.00},
2: {'name': 'Product B', 'price': 30.00},
3: {'name': 'Product C', 'price': 40.00}
}
cart_items = []
total = 0
for product_id, quantity in cart.items():
product = products[product_id]
item_total = product['price'] * quantity
total += item_total
cart_items.append({'product': product, 'quantity': quantity, 'item_total': item_total})
return render_template('cart.html', cart_items=cart_items, total=total)
ఈ మార్గం సెషన్ నుండి కార్ట్ను తిరిగి పొందుతుంది మరియు వస్తువుల ద్వారా లూప్ చేస్తుంది. ఇది నమూనా `products` డిక్షనరీ నుండి ఉత్పత్తి వివరాలను (పేరు, ధర) పొందుతుంది (నిజమైన అప్లికేషన్లో, ఇది డేటాబేస్ నుండి వస్తుంది). ఇది ఐటమ్ టోటల్ మరియు మొత్తం టోటల్ను లెక్కిస్తుంది, ఆపై కార్ట్ వస్తువులు మరియు టోటల్తో `cart.html` అనే టెంప్లేట్ను రెండర్ చేస్తుంది.
6. టెంప్లేట్లను సృష్టించడం
`templates` అనే ఫోల్డర్లో `index.html` మరియు `cart.html` అనే రెండు HTML ఫైల్లను సృష్టించండి.
index.html:
E-commerce Store
Welcome to Our Store!
View Cart
cart.html:
Shopping Cart
Shopping Cart
{% if cart_items %}
Product
Quantity
Price
Total
Actions
{% for item in cart_items %}
{{ item.product.name }}
{{ item.product.price }}
{{ item.item_total }}
Remove
{% endfor %}
Total: {{ total }}
{% else %}
Your cart is empty.
{% endif %}
Continue Shopping
ఈ టెంప్లేట్లు ఉత్పత్తి జాబితా మరియు పరిమాణాలను నవీకరించే మరియు వస్తువులను తీసివేసే సామర్థ్యంతో షాపింగ్ కార్ట్ను రెండర్ చేస్తాయి.
అప్లికేషన్ను అమలు చేయడం
`app.py` ఫైల్ను అమలు చేయండి:
python app.py
మీ బ్రౌజర్ను తెరిచి, ఇ-కామర్స్ స్టోర్ను యాక్సెస్ చేయడానికి `http://127.0.0.1:5000/` కి నావిగేట్ చేయండి. మీరు కార్ట్కు వస్తువులను జోడించవచ్చు, పరిమాణాలను నవీకరించవచ్చు మరియు వస్తువులను తీసివేయవచ్చు.
అధునాతన ఫీచర్లు మరియు పరిశీలనలు
పై ఉదాహరణ ప్రాథమిక షాపింగ్ కార్ట్ అమలును అందిస్తుంది. ఉత్పత్తి-స్థాయి ఇ-కామర్స్ అప్లికేషన్ను రూపొందించడానికి, ఈ క్రింది అధునాతన ఫీచర్లు మరియు పరిశీలనలను పరిగణించండి:
డేటాబేస్ ఇంటిగ్రేషన్
ఉత్పత్తి డేటాను డిక్షనరీలో నిల్వ చేయడానికి బదులుగా, ఉత్పత్తి సమాచారాన్ని నిల్వ చేయడానికి మరియు తిరిగి పొందడానికి డేటాబేస్ (ఉదా., PostgreSQL, MySQL, MongoDB) ను ఉపయోగించండి. పైథానిక్ పద్ధతిలో డేటాబేస్తో ఇంటరాక్ట్ చేయడానికి SQLAlchemy వంటి ORM ను ఉపయోగించండి.
SQLAlchemy ఉపయోగించి ఉదాహరణ (సంభావిత):
from sqlalchemy import create_engine, Column, Integer, String, Float
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Product(Base):
__tablename__ = 'products'
id = Column(Integer, primary_key=True)
name = Column(String)
price = Column(Float)
# ... (Database setup and usage)
యూజర్ ప్రమాణీకరణ
వినియోగదారులు ఖాతాలను సృష్టించడానికి, లాగిన్ చేయడానికి మరియు వారి ఆర్డర్ చరిత్రను ట్రాక్ చేయడానికి వినియోగదారు ప్రమాణీకరణను అమలు చేయండి. జాంగో వంటి ఫ్రేమ్వర్క్లు అంతర్నిర్మిత ప్రమాణీకరణ వ్యవస్థలను అందిస్తాయి.
చెల్లింపు గేట్వే ఇంటిగ్రేషన్
చెల్లింపులను సురక్షితంగా ప్రాసెస్ చేయడానికి చెల్లింపు గేట్వే (ఉదా., స్ట్రైప్, పేపాల్) తో ఇంటిగ్రేట్ చేయండి. ఇంటిగ్రేషన్ను సరిగ్గా అమలు చేయడానికి చెల్లింపు గేట్వే డాక్యుమెంటేషన్ను అనుసరించండి. ముఖ్యమైనది: చెల్లింపు సమాచారాన్ని నిర్వహించేటప్పుడు భద్రతకు ప్రాధాన్యత ఇవ్వండి.
షిప్పింగ్ మరియు పన్ను గణనలు
వినియోగదారు స్థానం ఆధారంగా షిప్పింగ్ మరియు పన్ను గణనలను అమలు చేయండి. ఖచ్చితమైన షిప్పింగ్ రేట్లు మరియు పన్ను సమాచారాన్ని పొందడానికి బాహ్య API లు లేదా లైబ్రరీలను ఉపయోగించండి. యూరప్ మరియు ఇతర ప్రాంతాలలో అమ్మకాలకు VAT (విలువ జోడించిన పన్ను) పరిణామాలను పరిగణించండి.
భద్రత
వినియోగదారు డేటాను రక్షించడానికి మరియు దాడులను నిరోధించడానికి పటిష్టమైన భద్రతా చర్యలను అమలు చేయండి. ఇందులో ఇవి ఉంటాయి:
- HTTPS: క్లయింట్ మరియు సర్వర్ మధ్య అన్ని కమ్యూనికేషన్లను ఎన్క్రిప్ట్ చేయడానికి HTTPS ను ఉపయోగించండి.
- ఇన్పుట్ ధ్రువీకరణ: ఇంజెక్షన్ దాడులను నిరోధించడానికి అన్ని వినియోగదారు ఇన్పుట్లను ధ్రువీకరించండి.
- అవుట్పుట్ ఎన్కోడింగ్: క్రాస్-సైట్ స్క్రిప్టింగ్ (XSS) దాడులను నిరోధించడానికి అవుట్పుట్ను ఎన్కోడ్ చేయండి.
- CSRF రక్షణ: క్రాస్-సైట్ రిక్వెస్ట్ ఫోర్జరీ దాడులను నిరోధించడానికి CSRF రక్షణను అమలు చేయండి.
- క్రమబద్ధమైన భద్రతా ఆడిట్లు: దుర్బలత్వాలను గుర్తించడానికి మరియు సరిచేయడానికి క్రమబద్ధమైన భద్రతా ఆడిట్లను నిర్వహించండి.
స్కేలబిలిటీ
పెరుగుతున్న ట్రాఫిక్ మరియు డేటాను నిర్వహించడానికి మీ అప్లికేషన్ను స్కేలబుల్ చేయడానికి రూపొందించండి. ఇందులో ఇవి ఉండవచ్చు:
- లోడ్ బ్యాలెన్సింగ్: బహుళ సర్వర్లలో ట్రాఫిక్ను పంపిణీ చేయడం.
- కాషింగ్: డేటాబేస్ లోడ్ను తగ్గించడానికి తరచుగా యాక్సెస్ చేయబడే డేటాను కాష్ చేయడం.
- డేటాబేస్ ఆప్టిమైజేషన్: పనితీరును మెరుగుపరచడానికి డేటాబేస్ ప్రశ్నలు మరియు ఇండెక్సింగ్ను ఆప్టిమైజ్ చేయడం.
- అసింక్రోనస్ టాస్క్లు: దీర్ఘకాలం నడిచే పనులను నిర్వహించడానికి అసింక్రోనస్ టాస్క్ క్యూలను (ఉదా., సెలెరీ) ఉపయోగించడం.
అంతర్జాతీయీకరణ మరియు స్థానికీకరణ (i18n/l10n)
వివిధ దేశాల వినియోగదారులకు మీ అప్లికేషన్ను అందుబాటులోకి తీసుకురావడం ద్వారా అంతర్జాతీయీకరణ మరియు స్థానికీకరణను అమలు చేయండి. ఇందులో ఇవి ఉంటాయి:
- టెక్స్ట్ అనువాదం: వచనాన్ని వివిధ భాషలలోకి అనువదించడం.
- తేదీలు మరియు సంఖ్యలను ఫార్మాట్ చేయడం: స్థానిక సంప్రదాయాలకు అనుగుణంగా తేదీలు మరియు సంఖ్యలను ఫార్మాట్ చేయడం.
- వివిధ కరెన్సీలకు మద్దతు: వివిధ కరెన్సీలు మరియు కరెన్సీ చిహ్నాలకు మద్దతు ఇవ్వడం.
- వివిధ సాంస్కృతిక నిబంధనలకు అనుగుణంగా మారడం: యూజర్ ఇంటర్ఫేస్ను వివిధ సాంస్కృతిక నిబంధనలకు అనుగుణంగా మార్చడం. ఉదాహరణకు, కొన్ని సంస్కృతులు కుడి నుండి ఎడమకు చదువుతాయి.
ఫ్లాస్క్-బేబుల్ ఉపయోగించి ఉదాహరణ:
from flask import Flask, render_template
from flask_babel import Babel, gettext
app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'en'
app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations'
babel = Babel(app)
@app.route('/')
def index():
title = gettext('Welcome')
return render_template('index.html', title=title)
పరీక్ష
మీ కోడ్ యొక్క నాణ్యత మరియు విశ్వసనీయతను నిర్ధారించడానికి సమగ్ర యూనిట్ మరియు ఇంటిగ్రేషన్ పరీక్షలను రాయండి. pytest లేదా unittest వంటి పరీక్షా ఫ్రేమ్వర్క్లను ఉపయోగించండి.
ఉదాహరణ: వివిధ కరెన్సీలను నిర్వహించడం
మీరు USD (అమెరికన్ డాలర్), EUR (యూరో), మరియు GBP (బ్రిటిష్ పౌండ్) లకు మద్దతు ఇవ్వాలనుకుంటున్నారని అనుకుందాం. మీరు వీటిని చేయవలసి ఉంటుంది:
- కరెన్సీ సమాచారాన్ని నిల్వ చేయండి: మీ డేటాబేస్ లేదా కాన్ఫిగరేషన్లో కరెన్సీ కోడ్ మరియు మార్పిడి రేటును నిల్వ చేయండి.
- ధరలను మార్చండి: మార్పిడి రేటు ఆధారంగా వినియోగదారు ప్రాధాన్య కరెన్సీకి ధరలను మార్చండి.
- ధరలను ఫార్మాట్ చేయండి: కరెన్సీ యొక్క ఫార్మాట్కు అనుగుణంగా ధరలను ఫార్మాట్ చేయండి (ఉదా., $10.00, €10,00, £10.00).
- కరెన్సీ చిహ్నాన్ని ప్రదర్శించండి: సరైన కరెన్సీ చిహ్నాన్ని ప్రదర్శించండి.
సంభావిత ఉదాహరణ:
import locale
def format_currency(amount, currency_code):
try:
locale.setlocale(locale.LC_ALL, '') # Use system default locale
except locale.Error:
print("Warning: Could not set locale. Currency formatting may be incorrect.")
return locale.currency(amount, symbol=True, grouping=True, international=False)
# Example usage
price_usd = 10.00
formatted_price_usd = format_currency(price_usd, 'USD') # Outputs: $10.00 (or similar based on locale)
గమనిక: `locale` మాడ్యూల్ యొక్క ప్రవర్తన సిస్టమ్లలో మారవచ్చు మరియు స్థిరమైన ఫలితాల కోసం స్పష్టమైన స్థానిక సెట్టింగ్ అవసరం కావచ్చు. ఉత్పత్తి వ్యవస్థల కోసం, మరింత పటిష్టమైన మరియు విశ్వసనీయమైన క్రాస్-ప్లాట్ఫారమ్ మద్దతును అందించే కరెన్సీ నిర్వహణ మరియు ఫార్మాటింగ్ కోసం ప్రత్యేక లైబ్రరీలను ఉపయోగించడాన్ని పరిగణించండి.
ముగింపు
పటిష్టమైన షాపింగ్ కార్ట్ సిస్టమ్ను రూపొందించడం ఇ-కామర్స్ డెవలప్మెంట్లో కీలకమైన అంశం. ప్రధాన భాగాలను అర్థం చేసుకోవడం, సరైన ఫ్రేమ్వర్క్ను ఎంచుకోవడం మరియు డేటాబేస్ ఇంటిగ్రేషన్, చెల్లింపు గేట్వే ఇంటిగ్రేషన్ మరియు అంతర్జాతీయీకరణ వంటి అధునాతన ఫీచర్లను అమలు చేయడం ద్వారా, మీరు ప్రపంచవ్యాప్తంగా మీ వినియోగదారుల అవసరాలను తీర్చే స్కేలబుల్ మరియు సురక్షితమైన ఇ-కామర్స్ ప్లాట్ఫారమ్ను సృష్టించవచ్చు. డెవలప్మెంట్ ప్రక్రియ అంతటా భద్రత, స్కేలబిలిటీ మరియు వినియోగదారు అనుభవానికి ప్రాధాన్యత ఇవ్వాలని గుర్తుంచుకోండి. ఈ పోస్ట్ మీ పైథాన్-ఆధారిత ఇ-కామర్స్ షాపింగ్ కార్ట్ను నిర్మించడానికి బలమైన పునాదిని అందిస్తుంది. అదృష్టం!