我正在使用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()
但我无法理解为什么奥斯卡没有向我展示带有货到付款方式的结账模板。
任何人都可以帮我吗?
答案 0 :(得分:2)
django-oscar
项目中有两种集成货到付款的方式:
覆盖结帐应用程序:
在这种情况下,必须覆盖结帐模板,因为默认情况下Oscar
或者无法获取cashondelivery
结帐模板,至少payment_details
。因此,首先您需要覆盖这些模板文件,然后在创建应用程序后,在其中添加app.py
文件,您可以在cashondelivery
documentation处覆盖结帐应用程序。
创建自定义视图和结帐应用:
您可以在django-oscar-paypal
集成包中看到一个沙箱示例,用于集成paypal
和Oscar
。
您可以在此程序包中看到他们使用checkout应用程序来替换defaul checkout应用程序;在这个应用程序中,他们覆盖view.py
文件和app.view
文件;覆盖模板并覆盖app.py
文件。
因此,我们可以对django-oscar-cash-on-delivery
执行相同操作,因此:
一个。如果需要,可以在checkout
应用程序中创建一个名为apps
的新应用程序,或者像您一样。此应用程序仅包含视图和应用程序文件。
湾在视图文件中,我们会放置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
文件,因此,第一个选项不再适用。但是,如果你想要它回来,请说出来!