[PYTHON] Comment développer une application de panier avec Django

Ce tutoriel est le deuxième article d'une série sur la création d'applications ** e-commerce ** à l'aide du framework Web ** Django **. Si vous avez manqué le premier tutoriel, vous pouvez le trouver en ligne ici. [Comment développer des applications Web sur Alibaba Cloud en utilisant le framework Django](https://www.alibabacloud.com/blog/how-to-develop-web-applications-on-alibaba-cloud-with-django -framework_594265? spm = a2c65.11461447.0.0.25d054951cPDkx)

1. Introduction

Avec l'avènement de nouvelles données et de nouveaux produits technologiques, chaque entreprise doit désormais créer sa propre plate-forme de commerce électronique et l'intégrer directement dans le site Web de l'entreprise. Le tutoriel présenté ici vise à vous montrer comment exploiter la puissance du framework Django pour construire un système de panier.

2. Portée de notre projet

** 2.1. Détails du projet ** Le projet que nous construisons est une application de commerce électronique qui permet aux gens d'acheter et de vendre des biens. Pour plus de flexibilité et de maintenabilité, le projet est divisé en trois applications indépendantes: l'application principale (développée dans le tutoriel précédent), l'application Cart (développée dans ce tutoriel), l'application de paiement (développée dans le tutoriel suivant) ..

** 2.2. Application de chariot ** L'application panier est utilisée pour gérer le processus d'achat et de vente, et pour gérer le panier lui-même et les articles du panier dans le panier (ajouts, mises à jour, suppressions d'articles du panier).

Les éléments spécifiques gérés ici sont:

** 2.3. Paramètres de l'environnement de développement ** Nous commençons par récupérer le code source d'un projet déjà en ligne.

--Clonez le projet à l'aide de GIT.

$ cd ~/projects                 # Switch to your project folder on Home directory
$ git clone https://github.com/binel01/buyandsell.git

Remarque: Après avoir émis cette commande, un dossier nommé buyandsell sera créé dans le répertoire du projet pour contenir tout le code source de votre projet.

$ pip install virtualenv

--Créer venv

$ virtualenv venv

--Activer venv

$ source venv\bin\activate

--Installation de dépendance

(venv)$ pip install -r requirements.txt

--Initialisation de la base de données

(venv)$ python manage.py migrate

--Créer un super utilisateur

(venv)$ python manage.py createsuperuser  # then follow the instructions
(venv)$ python manage.py runserver

3. Développement de l'application de panier

Nous allons procéder avec ce flux.

3.1. Initialisation de l'application

Tout d'abord, vous devez créer une nouvelle application appelée ** panier ** et l'ajouter au fichier de paramètres ** settings.py **.

(venv)$ django-admin startapp cart

Cette commande crée un nouveau dossier nommé panier contenant le code source de l'application de panier.

Ajoutez l'application panier au fichier settings.py.

...
INSTALLED_APPS = [
    ...
    cart,
    ...
] 
...

3.2. Définition du modèle

Comme mentionné ci-dessus, cette application prend en charge les modèles suivants.

from django.db import models
from django.contrib.auth.models import User
from datetime import datetime

from core.models import Product

class Cart(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(default=datetime.now)

class CartItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    price_ht = models.FloatField(blank=True)
    cart = models.ForeignKey('Cart', on_delete=models.CASCADE)

    TAX_AMOUNT = 19.25

    def price_ttc(self):
        return self.price_ht * (1 + TAX_AMOUNT/100.0)

    def __str__(self):
        return  self.client + " - " + self.product

3.3. Afficher la définition

** 3.3.1. Vue ** Afin de gérer les données présentées à l'utilisateur, nous devons définir une vue qui fait office de contrôle.

Vous trouverez ci-dessous les fichiers ** views.py ** qui résultent des modèles de base de données ** Cart ** et ** CartItem **.

from django.shortcuts import render
from django.views.generic import DetailView, ListView, CreateView, UpdateView, DeleteView

from .models import Cart, CartItem

##-------------- Cart Views --------------------------------------
class DetailCart(DetailView):
    model = Cart
    template_name='cart/detail_cart.html'

class ListCart(ListView):
    model = Cart
    context_object_name = 'carts'
    template_name='cart/list_carts.html'

class CreateCart(CreateView):
    model = Cart
    template_name = 'cart/create_cart.html'

class Updatecart(UpdateView):
    model = Cart
    template_name = 'cart/update_cart.html'

class DeleteCart(DeleteView):
    model = Cart
    template_name = 'cart/delete_cart.html'


##-------------- CartItem Views --------------------------------------
class DetailCartItem(DetailView):
    model = CartItem
    template_name='cartitem/detail_cartitem.html'

class ListCartItem(ListView):
    model = CartItem
    context_object_name = 'cartitems'
    template_name='cartitem/list_cartitems.html'

class CreateItemCart(CreateView):
    model = CartItem
    template_name = 'cartitem/create_cartitem.html'

class UpdateCartItem(UpdateView):
    model = CartItem
    template_name = 'cartitem/update_cartitem.html'

class DeleteCartItem(DeleteView):
    model = Cart
    template_name = 'cartitem/delete_cartitem.html'

3.4. Définition de la route URL

Voici la racine de l'URL définie dans buyandsell / cart / urls.py.

from django.urls import path, include

from . import views

# Cart Urls
urlpatterns = [
    path('cart/', views.ListCart, name='list-carts'),
    path('cart/<int:pk>/', views.DetailCart.as_view(), name='detail-cart'),
    path('cart/create/', views.CreateCart.as_view(), name='create-cart'),
    path('cart/<int:pk>/update/', views.Updatecart.as_view(), name='update-cart'),
    path('cart/<int:pk>/delete/', views.DeleteCart.as_view(), name='delete-cart'),
]

# CartItem Urls
urlpatterns += [
    path('cartitem/', views.ListCartItem.as_view(), name='list-cartitem'),
    path('cartitem/<int:pk>/', views.DetailCartItem.as_view(), name='detail-cartitem'),
    path('cartitem/create/', views.CreateCartItem.as_view(), name='create-cartitem'),
    path('cartitem/<int:pk>/update/', views.UpdateCartItem.as_view(), name='update-cartitem'),
    path('cartitem/<int:pk>/delete/', views.DeleteCartItem.as_view(), name='delete-cartitem'),
]

3.5. Définition de l'interface administrateur

En général, lorsque vous créez une application Web pour répondre aux besoins professionnels de votre client, vous créez également une application d'administrateur qui gère les données, les autorisations, les autorisations et les rôles stockés dans la base de données. Django simplifie la vie des développeurs web car cela se fait déjà par défaut.

Pour configurer l'interface d'administration, vous devez modifier le fichier ** admin.py ** pour le configurer afin d'utiliser le modèle.

Le fichier ** admin.py ** résultant est:

from django.contrib import admin

# Register your models here.
class CartAdmin(admin.ModelAdmin):
    pass

class CartItemAdmin(admin.ModelAdmin):
    pass

3.6. Tester si tout fonctionne

(venv)$ cd buyansell
(venv)$ python manage.py runserver

Déplacez ensuite votre navigateur vers cet emplacement.

http://localhost:8000

4. Conclusion

À la fin de ce tutoriel, vous devriez savoir comment commencer à créer votre application avec le framework Django. Plus précisément, vous avez appris ce que sont les modèles, vues et modèles de Django.

Le code source de l'application utilisé dans ce tutoriel est https://github.com/binel01/buyandsell/tree/master/core sur la page GitHub. Il est situé au noyau? Spm = a2c65.11461447.0.0.25d054951cPDkx).

La partie suivante du didacticiel de cette série vous montrera comment développer une application de panier pour gérer les ventes de produits.

Recommended Posts

Comment développer une application de panier avec Django
Procédure de création d'application multi-plateforme avec kivy
Étapes pour développer Django avec VSCode
Comment démarrer avec Django
Comment déployer une application Web créée avec Flask sur Heroku
Comment effectuer un traitement arithmétique avec le modèle Django
Comment ajouter un package avec PyCharm
J'ai essayé de résumer brièvement la procédure de démarrage du développement de Django
Comment déployer une application Django sur heroku en seulement 5 minutes
Comment lire un fichier CSV avec Python 2/3
Comment envoyer un message à LINE avec curl
Comment dessiner un graphique à 2 axes avec pyplot
Comment créer un dictionnaire avec une structure hiérarchique.
Comment implémenter "named_scope" de RubyOnRails avec Django
Comment créer une API Rest dans Django
Je souhaite télécharger une application Django sur heroku
Une nouvelle forme d'application qui fonctionne avec GitHub: Comment créer des applications GitHub
Comment convertir / restaurer une chaîne avec [] en python
Créer une application Todo avec Django REST Framework + Angular
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Comment créer un sous-menu avec le plug-in [Blender]
(Python) Essayez de développer une application Web en utilisant Django
Comment déployer une application Django dans le cloud Alibaba
Comment obtenir un utilisateur connecté avec les forms.py de Django
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Comment faire un jeu de tir avec toio (partie 1)
Essayez de créer une application Todo avec le framework Django REST
Comment créer un environnement Django (python) sur Docker
Étapes de l'installation de Python 3 à la création d'une application Django
Créer une application Todo avec Django ③ Créer une page de liste de tâches
Comment utiliser Django avec Google App Engine / Python
Transition vers l'écran de mise à jour avec le Django a tag
Déployer l'application Django créée avec PTVS sur Azure
À moi-même en tant que débutant Django (1) -Création d'un projet / application-
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Comment exécuter Django sur IIS sur un serveur Windows
Comment référencer des fichiers statiques dans un projet Django
À moi-même en tant que débutant Django (4) --Créer une application mémo-
Créer une application Todo avec Django ⑤ Créer une fonction d'édition de tâches
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Déployer une application Web créée avec Streamlit sur Heroku
Comment appeler une fonction
Créer une page d'accueil avec django
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment pirater un terminal
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment développer en Python
Comment supprimer avec SQLAlchemy?
Comment utiliser fixture dans Django pour saisir des exemples de données associés au modèle utilisateur
Gestion des fichiers statiques lors du déploiement en production avec Django
Comment convertir un tableau en dictionnaire avec Python [Application]
Comment sortir un document au format pdf avec Sphinx
Recommandation de django, wagtail ~ Pourquoi développer un site web avec python ~
Comment vérifier le comportement d'ORM avec un fichier avec django
Je veux créer un éditeur de blog avec l'administrateur de django