[PYTHON] Django Oscar einfaches Tutorial

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.

Entwicklungsumgebung

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

Django-Einstellungen (settings.py)

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',
)

Für Japan

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,
    },
}

Datenbank

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,
    }
}

Bestätigung des Site-Starts

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

Anfangsdaten

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.

Ländermodell

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';

Benutzerdaten

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

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.

Pipeline bestellen

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': (),
}

Mail-Einstellungen

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'

Zusammenfassung

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.

Referenzseite

Ich habe auf die folgende Seite verwiesen.

Recommended Posts

Django Oscar einfaches Tutorial
Python Django Tutorial (5)
Python Django Tutorial (2)
Django Tutorial Memo
Python Django Tutorial (8)
Python Django Tutorial (6)
Starten Sie das Django Tutorial 1
Python Django Tutorial (7)
Python Django Tutorial (1)
Python Django Tutorial Tutorial
Python Django Tutorial (3)
Python Django Tutorial (4)
Zusammenfassung des Python Django-Tutorials
Django Polymorphic Associations Tutorial
Django Girls Tutorial Hinweis
Django-Anfänger erstellen einfache Apps 3
Django-Anfänger erstellen einfache Apps 1
Fangen Sie mit Django an! ~ Tutorial ④ ~
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Django-Anfänger erstellen einfache Apps 2
Django-Anfänger erstellen einfache Apps 4
Python Django Tutorial Cheet Sheet
Django-Anfänger erstellen einfache Apps 5
Django
Django Girls Tutorial Zusammenfassung Erste Hälfte
Stolpern Sie beim Django 1.7-Tutorial
Stellen Sie das Django-Lernprogramm für IIS bereit ①
Einfacher RSS-Reader mit Django
Django Tutorial Zusammenfassung für Anfänger von Anfängern ③ (Anzeigen)
Django Tutorial (Blog-App erstellen) ⑤ - Artikelerstellungsfunktion
Djangos External Key Tutorial in 10 Minuten
Django Oscar (EC-Paket) Japan Usage Guide
Django Tutorial (Blog App erstellen) ④ --Einheitentest
Django Tutorial Zusammenfassung für Anfänger von Anfängern ⑤ (Test)