用户在django-oscar交货

时间:2016-08-11 07:42:43

标签: python django e-commerce 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()

但我无法理解为什么奥斯卡没有向我展示带有货到付款方式的结账模板。

这是我的结构文件夹: enter image description here

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:2)

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

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

    enter image description here

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

  3. 因此,我们可以对django-oscar-cash-on-delivery执行相同操作,因此:
    一个。如果需要,可以在checkout应用程序中创建一个名为apps的新应用程序,或者像您一样。此应用程序仅包含视图和应用程序文件。enter image description here

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

    ℃。在checkout中的app文件中,我们声明了checkout应用程序:

    from oscar.apps.checkout import app
    from .views import PaymentDetailsView
    
    class CheckoutApplication(app.CheckoutApplication):
        payment_details_view = PaymentDetailsView
    
    application = CheckoutApplication()
    

    d。最后,我们将结帐应用声明为默认结帐应用,documentation表示 即我们已确保应用程序在设置中覆盖默认签出应用程序:

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

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

    <强> PD:
    我们已经将新的主版本移动到沙箱文件夹中的views.py文件,因此,第一个选项不再适用。但是,如果你想要它回来,请说出来!