django-oscar 中的用户货到付款

User cash on delivery in django-oscar

我正在使用 django-oscar 从事电子商店项目,我正在尝试添加 COD 支持。我正在使用 django-oscar-cash-on-delivery.

我做了steps,你可以看到我的配置:

THIRD_PARTY_APPS = [
    'jet.dashboard',
    'jet',

    'axes',
    'cashondelivery',
    'django_extensions',
    'oscarapi',
    'paypal',
    'payu',
    'rest_framework',
    'robots',
    'widget_tweaks',
    'webpack_loader',
]

并创建了一个名为 apps 的应用并正确加载:

INSTALLED_APPS = THIRD_PARTY_APPS + PROJECT_APPS + [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.flatpages',
] + get_core_apps(
    [
        'apps.shipping'
    ]
)

apps 文件夹中,我创建了一个 apps.py 文件,其中包含以下代码:

from oscar.app import Shop

# from apps.checkout.app import application as checkout_app
from cashondelivery.app import application as checkout_app


class ApplicationShop(Shop):
    checkout_app = checkout_app


application = ApplicationShop()

但是我不明白为什么 Oscar 不给我看货到付款方式的结账模板。

这是我的结构文件夹:

谁能帮我解决这个问题?

django-oscar项目集成货到付款有两种方式:

  1. 覆盖结帐应用程序:
    在这种情况下,有必要覆盖结帐模板,因为默认情况下 Oscar 不会或无法获得 cashondelivery 结帐模板,至少 payment_details。因此,首先您需要覆盖这些模板文件,然后在创建应用程序并在其中添加一个 app.py 文件,您可以在其中覆盖结帐应用程序,如 cashondelivery documentation 所说。

  2. 创建自定义视图和结帐应用程序:
    您可以在 django-oscar-paypal 集成包中看到将 paypalOscar 集成的沙箱示例。 您可以在此包中看到他们使用结帐应用程序来替换默认的结帐应用程序;在此应用程序中,它们会覆盖 view.py 文件和 app.view 文件;覆盖模板并覆盖 app.py 文件。

所以,我们可以对 django-oscar-cash-on-delivery 做同样的事情,所以:
一种。如果需要,可以在 apps 应用程序中创建一个名为 checkout 的新应用程序,或者像您这样的应用程序。此应用程序仅包含视图和应用程序文件。

b。在视图文件中,我们将放置 cash-on-delivery views 文件,现在它位于 sanbox 文件夹中。

c。在结帐内的应用程序文件中,我们声明结帐应用程序:

from oscar.apps.checkout import app
from .views import PaymentDetailsView

class CheckoutApplication(app.CheckoutApplication):
    payment_details_view = PaymentDetailsView

application = CheckoutApplication()

d。最后,我们声明我们的结账应用程序为默认结账应用程序,如 documentation 所说。
e.我们已确保应用程序覆盖默认签出应用程序,在设置中:

INSTALLED_APPS = + get_core_apps(
    [
        'apps.checkout',
        'apps.shipping'
    ]
)

您现在可以在您的奥斯卡项目中使用货到付款方式付款。
我们建议使用第二种方式,因为您可以使用多种付款方式。

PD:
在新的主版本中,我们已将 views.py 文件移动到沙箱文件夹中,因此,第一个选项将不再有效。但是,如果你想要它回来,请告诉我们!