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.
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
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éfinissez
SITE_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.BasketMiddlewareet
django.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 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,
},
}
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,
}
}
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
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.
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';
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
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.
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': (),
}
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'
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.
Je me suis référé au site suivant.
Recommended Posts