[PYTHON] tutoriel simple django oscar

Puisqu'il est devenu nécessaire de créer moi-même un site ec, si vous utilisez pleinement le package et le cadre, le site EC sera terminé (devrait). J'ai donc décidé d'utiliser Django pour le framework web et Oscar pour le package EC. C'est bien de décider, mais il y a peu de matériaux japonais. La version anglaise officielle comprend également "Pour plus d'informations Sandbox et github ) De »n'est pas gentil et difficile à comprendre.

Cet article montre la procédure pour créer un site EC ~~ pour se sentir comme ~~. En gros, je viens de tracer django-oscar / Construire votre propre boutique de django-oscar, mais pour référence.

Enfin, nous allons construire un site EC sans fonction de paiement. En outre, ce n'est qu'un tutoriel.

Environnement de développement

Setup

Dans Documentation, j'utilise mkvirtualenv ou virtualenv, mais cette fois je l'ai entré depuis le début sur mon ordinateur. J'utiliserai l'Anaconda que j'avais.

Créez un environnement virtuel avec Anaconda. Tout d'abord, construisez l'environnement python 3.8.

$ conda create -n py38 python=3.8

Activez l'environnement virtuel.

$ conda info -e #Confirmation environnementale
$ conda activate py38

Installez django-oscar avec pip.

$ pip install django-oscar

Certains packages sont manquants, alors installez-les également.

$ pip install sorl-thumbnail
$ pip install pysolr

Depuis janvier 2020, les versions sont les suivantes

Créer un projet Django

$ django-admin startproject frobshop

Paramètres Django (settings.py)

Ajoutez ce qui suit au début de la ligne frobshop.frobshop.settings.py. Les paramètres par défaut d'Oscar sont importés.

python:frobshop.frobshop.settings.py


from oscar.defaults import *

Ajout de processeurs de contexte Oscar au modèle.

python:frobshop.frobshop.settings.py


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
                'oscar.apps.search.context_processors.search_form',
                'oscar.apps.checkout.context_processors.checkout',
                'oscar.apps.customer.notifications.context_processors.notifications',
                'oscar.core.context_processors.metadata',
            ],
        },
    },
]

Réécrivez ʻINSTALLED_APPS comme suit et définissezSITE_ID`.

python:frobshop.frobshop.settings.py


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'django.contrib.sites',
    'django.contrib.flatpages',

    'oscar',
    'oscar.apps.analytics',
    'oscar.apps.checkout',
    'oscar.apps.address',
    'oscar.apps.shipping',
    'oscar.apps.catalogue',
    'oscar.apps.catalogue.reviews',
    'oscar.apps.partner',
    'oscar.apps.basket',
    'oscar.apps.payment',
    'oscar.apps.offer',
    'oscar.apps.order',
    'oscar.apps.customer',
    'oscar.apps.search',
    'oscar.apps.voucher',
    'oscar.apps.wishlists',
    'oscar.apps.dashboard',
    'oscar.apps.dashboard.reports',
    'oscar.apps.dashboard.users',
    'oscar.apps.dashboard.orders',
    'oscar.apps.dashboard.catalogue',
    'oscar.apps.dashboard.offers',
    'oscar.apps.dashboard.partners',
    'oscar.apps.dashboard.pages',
    'oscar.apps.dashboard.ranges',
    'oscar.apps.dashboard.reviews',
    'oscar.apps.dashboard.vouchers',
    'oscar.apps.dashboard.communications',
    'oscar.apps.dashboard.shipping',

    # 3rd-party apps that oscar depends on
    'widget_tweaks',
    'haystack',
    'treebeard',
    'sorl.thumbnail',
    'django_tables2',
]

SITE_ID = 1

Ajout de ʻoscar.apps.basket.middleware.BasketMiddlewareetdjango.contrib.flatpages.middleware.FlatpageFallbackMiddleware aux paramètres MIDDLEWARE`.

python:frobshop.frobshop.settings.py


MIDDLEWARE = (
    ...
    'oscar.apps.basket.middleware.BasketMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)

Ajout du paramètre «AUTHENTICATION_BACKENDS» afin que vous puissiez vous authentifier avec votre adresse e-mail.

python:frobshop.frobshop.settings.py


AUTHENTICATION_BACKENDS = (
    'oscar.apps.customer.auth_backends.EmailBackend',
    'django.contrib.auth.backends.ModelBackend',
)

Pour le Japon

Pour prendre en charge le Japon, réécrivez le code de langue et le fuseau horaire comme suit.

python:frobshop.frobshop.settings.py


LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

Définir la devise et le format de devise (car le format par défaut d'oscar s'affiche jusqu'à la deuxième décimale)

python:frobshop.frobshop.settings.py


OSCAR_DEFAULT_CURRENCY = 'JPY'
OSCAR_CURRENCY_FORMAT = '¤#,##0'

URLs

Réécrivez frobshop.frobshop.urls.py comme suit.

python:frobshop.frobshop.urls.py


from django.apps import apps
from django.urls import include, path  # > Django-2.0
from django.contrib import admin

urlpatterns = [
    path('i18n/', include('django.conf.urls.i18n')),  # > Django-2.0

    # The Django admin is not officially supported; expect breakage.
    # Nonetheless, it's often useful for debugging.

    path('admin/', admin.site.urls),  # > Django-2.0

    path('', include(apps.get_app_config('oscar').urls[0])),  # > Django-2.0
]

Search backend

Mettre en place un système de recherche. Si vous souhaitez l'essayer pour le moment, effectuez les réglages suivants.

python:frobshop.frobshop.settings.py


HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
    },
}

ʻSi vous voulez configurer Apache Solr, faites [Configurer Apache Solr](https://django-oscar.readthedocs.io/en/stable/howto/how_to_setup_solr.html) à l'avance, puis procédez comme suit dans frobshop.frobshop Ajouté à .settings.py`.

python:frobshop.frobshop.settings.py


HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr',
        'INCLUDE_SPELLING': True,
    },
}

Base de données

Si vous voulez vérifier l'opération immédiatement, utilisez sqlite pour la base de données. Modifiez frobshop.frobshop.settings.py et réécrivez les paramètres DATABASES comme suit.

python:frobshop.frobshop.settings.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        'ATOMIC_REQUESTS': True,
    }
}

Confirmation du démarrage du site

Effectuez la migration.

$ python manage.py migrate

Démarrez le serveur et vérifiez si le site peut être démarré.

$ python manage.py runserver

Donnée initiale

Jusqu'à ce point, un site EC sans produits ni utilisateurs enregistrés sera créé. Définissez divers paramètres pour qu'il ressemble à un site EC.

Modèle de pays

Mettez les données initiales de 249 pays dans le modèle de pays (adresse_pays).

$ pip install pycountry
$ python manage.py oscar_populate_countries

Il y a trop de 249 pays, donc seul le Japon sera enregistré. Tout d'abord, après vous être connecté à la base de données, définissez is_shipping_country sur 1 pour le Japon uniquement et 0 pour les autres. La sélection du nom de pays n'apparaît pas lors de l'enregistrement d'une adresse (le Japon devient la valeur par défaut)

$ python manage.py dbshell
SQLite version 3.30.1 2019-10-10 20:19:45
Enter ".help" for usage hints.
sqlite> UPDATE address_country SET is_shipping_country = 0 WHERE printable_name != 'Japan';

Données d'utilisateur

Saisissez les données en vous reportant à Injecter les données initiales pour le modèle.

Tout d'abord, saisissez les données utilisateur. Les informations utilisateur enregistrées dans Sandbox sont entrées.

$ python manage.py loaddata frobshop/fixtures/auth.json
Installed 2 object(s) from 1 fixture(s)

L'utilisateur administrateur dispose des paramètres suivants.

username: superuser
email: [email protected]
password: testing

Le compte du personnel est le suivant.

username: staff
email: [email protected]
password: testing

Données du produit

Entrez les données du produit. Il existe deux types de données produit sur le site officiel Sandbox. multi-stockrecord-product.json et child_products.json //github.com/django-oscar/django-oscar/blob/master/sandbox/fixtures/child_products.json).

Les différences entre eux seront expliquées. child_products.json est différent si même un produit est différent (par exemple, un T-shirt) Il montre comment définir le moment auquel vous souhaitez correspondre (taille, couleur, etc.). Par exemple, pour un T-shirt, définissez ʻAttributs sur les tailles L, M, S`.

multi-stockrecord-product.json exploite un site ec Dans ce cas, plusieurs entrepôts ou fournisseurs peuvent gérer l'inventaire. Plusieurs fournisseurs sont gérés par partner.stockrecord dans oscar.

Si vous souhaitez saisir des données produit pour le moment, saisissez l'un des jsons dans la base de données.

$ python manage.py loaddata frobshop/fixtures/multi-stockrecord-product.json

Vous trouverez ci-dessous un lien vers un document qui montre comment oscar gère les produits.

Commander le pipeline

Lorsqu'une commande arrive via le site ec, définissez comment traiter la commande dans le pipeline de commandes. Par exemple, ajoutez ce qui suit à settings.py. Dans l'exemple ci-dessous, «En attente» est le premier statut et la commande est «En attente» → «En cours de traitement» → «Traitée». Il est supposé qu'en cas d'annulation au milieu, le statut sera «Annulé».

python:frobshop.frobshop.settings.py


OSCAR_INITIAL_ORDER_STATUS = 'Pending'
OSCAR_INITIAL_LINE_STATUS = 'Pending'
OSCAR_ORDER_STATUS_PIPELINE = {
    'Pending': ('Being processed', 'Cancelled',),
    'Being processed': ('Processed', 'Cancelled',),
    'Cancelled': (),
}

Paramètres de messagerie

Si les paramètres ci-dessus sont laissés tels quels, un ConnectionRefusedError at / checkout / preview / apparaîtra lorsque la commande est confirmée (lorsque vous appuyez sur Passer la commande sur l'écran Aperçu de la commande).

[Création d'un site de commerce électronique complet, partie 5: test en dirigeant les clients vers la page de remerciement d'Oscar après le paiement](https://notathoughtexperiment.me/blog/building-a-full-ecommerce-site-part-5-send-clients- La raison est écrite dans la page de remerciement après paiement /), mais je ne pouvais pas la comprendre même après l'avoir lue.

La solution de contournement consiste à ajouter ʻEMAIL_BACKEND à settings.py` comme suit.

python:frobshop.frobshop.settings.py


EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

Résumé

Pour le moment, si vous avez configuré jusqu'à présent, toutes les fonctions du site EC seront couvertes (autres que la fonction de paiement).

Pour créer un site EC (par exemple, ajouter une image à un produit), Paramètres du site Sandbox sur Github Veuillez essayer de le construire en référence à.

Si vous en avez envie, j'aimerais rédiger une implémentation de la fonction de paiement.

Site de référence

Je me suis référé au site suivant.

Recommended Posts

tutoriel simple django oscar
Tutoriel Python Django (5)
Tutoriel Python Django (2)
mémo du didacticiel django
Tutoriel Python Django (8)
Tutoriel Python Django (6)
Démarrer le didacticiel Django 1
Tutoriel Python Django (7)
Tutoriel Python Django (1)
Tutoriel du didacticiel Python Django
Tutoriel Python Django (3)
Tutoriel Python Django (4)
Résumé du didacticiel Python Django
Didacticiel sur les associations polymorphes Django
Note du didacticiel Django Girls
Les débutants de Django créent des applications simples 3
Les débutants de Django créent des applications simples 1
Lancez-vous avec Django! ~ Tutoriel ④ ~
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Les débutants de Django créent des applications simples 2
Les débutants de Django créent des applications simples 4
Fiche technique du didacticiel Python Django
Les débutants de Django créent des applications simples 5
Django
Résumé du didacticiel Django Girls Première moitié
Trébucher lors du didacticiel django 1.7
Déployer le didacticiel Django sur IIS ①
Lecteur RSS simple réalisé avec Django
Résumé du tutoriel Django pour les débutants par les débutants ③ (Afficher)
Tutoriel Django (Créer une application de blog) ⑤ --Fonction de création d'article
Tutoriel de clé externe de Django en 10 minutes
Django Oscar (EC Package) Guide d'utilisation du Japon
Tutoriel Django (Créer une application de blog) ④ --Test d'unité
Résumé du tutoriel Django pour les débutants par les débutants ⑤ (test)