Pracuję w projekcie e-sklepu z wykorzystaniem django-oscar
i próbuję dodać obsługę COD. Używam django-oscar-cash-on-delivery
.
Zrobiłem to kroki, możesz zobaczyć moją konfigurację:
THIRD_PARTY_APPS = [
"jet.dashboard",
"jet",
"axes",
"cashondelivery",
"django_extensions",
"oscarapi",
"paypal",
"payu",
"rest_framework",
"robots",
"widget_tweaks",
"webpack_loader",
]
I stworzył aplikację o nazwie apps
i ładowane poprawnie:
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"
]
)
W apps
folder i utworzyłem apps.py
plik z tym kodem wewnątrz:
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()
Ale nie mogę zrozumieć, dlaczego Oscar nie pokazuje mi szablonu kasy z metodą płatności gotówką.
Czy ktoś może mi w tym pomóc?
Odpowiedzi:
2 dla odpowiedzi № 1Istnieją dwa sposoby integracji gotówki przy odbiorze django-oscar
projekt:
Zastąp kasę aplikacji:
W takim przypadku konieczne jest zastąpienie szablonów płatności, ponieważ domyślnieOscar
nie możesz dostaćcashondelivery
przynajmniej szablony kaspayment_details
. Najpierw trzeba zastąpić ten plik szablonu i po utworzeniu aplikacji dodać do niegoapp.py
plik, w którym zastępujesz aplikację kasy jakocashondelivery
dokumentacja mówi.Utwórz niestandardową aplikację do przeglądania i kasowania:
Możesz zobaczyć wdjango-oscar-paypal
pakiet integracyjny przykład piaskownicy do integracjipaypal
zOscar
. Możesz zobaczyć w tym pakiecie, że używają aplikacji kasowej do zastąpienia aplikacji kasowej; w tej aplikacji zastępująview.py
plik iapp.view
plik; nadpisać szablony i zastąpićapp.py
plik.
Więc możemy zrobić to samo dla django-oscar-cash-on-delivery
, więc:
za. Utwórz nową aplikację o nazwie checkout
w środku apps
wniosek, jeśli chcesz, lub ktoś taki jak ty. Ta aplikacja będzie zawierać tylko widoki i plik aplikacji.
b. W pliku widoków umieścimy plik cash-on-delivery
widoki plik, teraz jest w folderze Sanbox.
do. W pliku aplikacji wewnątrz kasy deklarujemy aplikację kasową:
from oscar.apps.checkout import app
from .views import PaymentDetailsView
class CheckoutApplication(app.CheckoutApplication):
payment_details_view = PaymentDetailsView
application = CheckoutApplication()
re. Na koniec deklarujemy naszą aplikację kasową jako domyślną aplikację kasową dokumentacja mówi.
mi. Zapewniliśmy, że aplikacja zastępuje domyślną aplikację do pobrania w ustawieniach:
INSTALLED_APPS = + get_core_apps(
[
"apps.checkout",
"apps.shipping"
]
)
Możesz teraz płacić gotówką przy odbiorze w swoim projekcie Oscar.
Zalecamy użycie drugiej metody, ponieważ możesz użyć więcej niż jednej metody płatności.
PD:
W nowej wersji głównej przenieśliśmy views.py
plik w folderze piaskownicy, więc pierwsza opcja nie będzie już działać, ale jeśli chcesz ją odzyskać, powiedz nam, proszę!