Da es notwendig wurde, eine ec-Site selbst zu erstellen, wird die EC-Site fertiggestellt (sollte), wenn Sie das Paket und das Framework vollständig nutzen. Also entschied ich mich, Django für das Webframework und Oscar für das EC-Paket zu verwenden. Es ist gut zu entscheiden, aber es gibt nur wenige japanische Materialien. Die offizielle englische Version enthält außerdem "Für weitere Informationen Sandbox und github ) De ”ist nicht nett und schwer zu verstehen.
Dieser Artikel zeigt die Vorgehensweise zum Erstellen einer EC-Site ~~, um sich wie ~~ zu fühlen. Grundsätzlich habe ich nur django-oscar / Aufbau eines eigenen Shops von django-oscar verfolgt, aber als Referenz.
Schließlich werden wir eine EC-Site ohne Zahlungsfunktion erstellen. Auch dies ist nur ein Tutorial.
Setup
In Dokumentation verwende ich "mkvirtualenv" oder "virtualenv", aber diesmal habe ich es von Anfang an auf meinem Computer eingegeben. Ich werde die Anaconda verwenden, die ich hatte.
Erstellen Sie mit Anaconda eine virtuelle Umgebung. Erstellen Sie zunächst die Python 3.8-Umgebung.
$ conda create -n py38 python=3.8
Virtuelle Umgebung aktivieren.
$ conda info -e #Umweltbestätigung
$ conda activate py38
Installieren Sie django-oscar
mit pip.
$ pip install django-oscar
Einige Pakete fehlen, installieren Sie sie also ebenfalls.
$ pip install sorl-thumbnail
$ pip install pysolr
Ab Januar 2020 lauten die Versionen wie folgt
Erstellen Sie ein Django-Projekt
$ django-admin startproject frobshop
Fügen Sie am Anfang der Zeile "frobshop.frobshop.settings.py" Folgendes hinzu. Die Standardeinstellungen von Oscar werden importiert.
python:frobshop.frobshop.settings.py
from oscar.defaults import *
Oscar-Kontextprozessoren zur Vorlage hinzugefügt.
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',
],
},
},
]
Schreiben Sie INSTALLED_APPS
wie folgt um und setzen Sie 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
"Oscar.apps.basket.middleware.BasketMiddleware" und "django.contrib.flatpages.middleware.FlatpageFallbackMiddleware" wurden zu den "MIDDLEWARE" -Einstellungen hinzugefügt.
python:frobshop.frobshop.settings.py
MIDDLEWARE = (
...
'oscar.apps.basket.middleware.BasketMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
Die Einstellung "AUTHENTICATION_BACKENDS" wurde hinzugefügt, damit Sie sich mit Ihrer E-Mail-Adresse authentifizieren können.
python:frobshop.frobshop.settings.py
AUTHENTICATION_BACKENDS = (
'oscar.apps.customer.auth_backends.EmailBackend',
'django.contrib.auth.backends.ModelBackend',
)
Um Japan zu unterstützen, schreiben Sie den Sprachcode und die Zeitzone wie folgt um.
python:frobshop.frobshop.settings.py
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
Festlegen der Währung und des Währungsformats (da das Standardformat von oscar bis zur zweiten Dezimalstelle angezeigt wird)
python:frobshop.frobshop.settings.py
OSCAR_DEFAULT_CURRENCY = 'JPY'
OSCAR_CURRENCY_FORMAT = '¤#,##0'
URLs
Schreiben Sie frobshop.frobshop.urls.py
wie folgt um.
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
Richten Sie ein Suchsystem ein. Wenn Sie es vorerst ausprobieren möchten, nehmen Sie die folgenden Einstellungen vor.
python:frobshop.frobshop.settings.py
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
},
}
Bevor Sie "Apache Solr" einstellen, Apache Solr einrichten und dann den folgenden "frobshop.frobshop" Hinzugefügt zu .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,
},
}
Wenn Sie den Vorgang sofort überprüfen möchten, verwenden Sie "sqlite" für die Datenbank. Bearbeiten Sie "frobshop.frobshop.settings.py" und schreiben Sie die "DATABASES" -Einstellungen wie folgt neu.
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,
}
}
Führen Sie die Migration durch.
$ python manage.py migrate
Starten Sie den Server und prüfen Sie, ob die Site gestartet werden kann.
$ python manage.py runserver
Bis zu diesem Zeitpunkt wird eine EC-Site ohne Produkte oder registrierte Benutzer erstellt. Nehmen Sie verschiedene Einstellungen vor, damit es wie eine EC-Site aussieht.
Fügen Sie die Anfangsdaten von 249 Ländern in das Ländermodell (address_country) ein.
$ pip install pycountry
$ python manage.py oscar_populate_countries
Es gibt zu viele 249 Länder, daher wird nur Japan registriert. Nachdem Sie eine Verbindung zur Datenbank hergestellt haben, setzen Sie is_shipping_country zunächst nur für Japan auf 1 und für die anderen auf 0. Die Auswahl des Ländernamens wird bei der Registrierung einer Adresse nicht angezeigt (Japan wird zur Standardeinstellung).
$ 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';
Geben Sie Daten unter [Anfangsdaten für Modell einfügen] ein (https://docs.djangoproject.com/ja/2.2/howto/initial-data/).
Geben Sie zunächst Benutzerdaten ein. In Sandbox registrierte Benutzerinformationen wird eingegeben.
$ python manage.py loaddata frobshop/fixtures/auth.json
Installed 2 object(s) from 1 fixture(s)
Der Administrator hat die folgenden Einstellungen.
username: superuser
email: [email protected]
password: testing
Das Mitarbeiterkonto lautet wie folgt.
username: staff
email: [email protected]
password: testing
Produktdaten eingeben. Es gibt zwei Arten von Produktdaten auf der offiziellen Sandbox-Website. multi-stockrecord-product.json und child_products.json //github.com/django-oscar/django-oscar/blob/master/sandbox/fixtures/child_products.json).
Die Unterschiede zwischen ihnen werden erklärt. child_products.json bedeutet, dass sogar ein Produkt einen anderen Typ hat (z. B. ein T-Shirt). Es zeigt, wie Sie festlegen, wann Sie entsprechen möchten (Größe, Farbe usw.). Stellen Sie beispielsweise für ein T-Shirt "Attribute" auf die Größen "L", "M", "S" ein.
multi-stockrecord-product.json betreibt eine Ec-Site In diesem Fall kann es mehrere Lager oder Lieferanten geben, die den Lagerbestand verwalten. Mehrere Lieferanten werden von partner.stockrecord
in oscar verwaltet.
Wenn Sie vorerst Produktdaten eingeben möchten, geben Sie einen der jsons in die Datenbank ein.
$ python manage.py loaddata frobshop/fixtures/multi-stockrecord-product.json
Unten finden Sie einen Link zu einem Dokument, das die Idee zeigt, wie oscar Produkte verwaltet.
Wenn eine Bestellung über die Website eingeht, legen Sie fest, wie die Bestellung in der Auftragspipeline verarbeitet werden soll. Fügen Sie beispielsweise Folgendes zu settings.py
hinzu. Im folgenden Beispiel ist "Ausstehend" der erste Status, und die Bestellung lautet "Ausstehend" → "Wird bearbeitet" → "Verarbeitet". Es wird davon ausgegangen, dass bei einer Stornierung in der Mitte der Status "Abgebrochen" lautet.
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': (),
}
Wenn die obigen Einstellungen unverändert bleiben, wird bei Bestätigung der Bestellung ein "ConnectionRefusedError at / checkout / template /" angezeigt (wenn Sie auf dem Bildschirm "Preview order" auf "Order aufgeben" klicken).
[Erstellen einer vollständigen E-Commerce-Website, Teil 5: Testen, wie Kunden nach der Zahlung auf die Dankesseite von Oscar geleitet werden](https://notathoughtexperiment.me/blog/building-a-full-ecommerce-site-part-5-send-clients- Der Grund ist auf der Dankesseite nach Zahlungseingang /) angegeben, aber ich konnte ihn selbst nach dem Lesen nicht verstehen.
Die Problemumgehung besteht darin, "EMAIL_BACKEND" wie folgt zu "settings.py" hinzuzufügen.
python:frobshop.frobshop.settings.py
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Wenn Sie sich bisher eingerichtet haben, werden vorerst alle Funktionen der EC-Site abgedeckt (außer der Zahlungsfunktion).
Um eine EC-Site zu erstellen (z. B. ein Image zu einem Produkt hinzuzufügen), Sandbox-Site-Einstellungen auf Github Bitte versuchen Sie es mit Bezug auf zu bauen.
Wenn Sie Lust dazu haben, möchte ich eine Implementierung der Zahlungsfunktion schreiben.
Ich habe auf die folgende Seite verwiesen.
Recommended Posts