Sto lavorando nel progetto e-shop utilizzando django-oscar
e sto provando ad aggiungere il supporto COD. Sto usando django-oscar-cash-on-delivery
.
Ho fatto il passaggi, puoi vedere la mia configurazione:
THIRD_PARTY_APPS = [
"jet.dashboard",
"jet",
"axes",
"cashondelivery",
"django_extensions",
"oscarapi",
"paypal",
"payu",
"rest_framework",
"robots",
"widget_tweaks",
"webpack_loader",
]
E ha creato un'app chiamata apps
e caricato correttamente:
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"
]
)
In apps
cartella che ho creato un apps.py
file con questo codice all'interno:
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()
Ma non riesco a capire perché Oscar non mi mostri il modello di pagamento con il metodo di pagamento in contrassegno.
Questa è la mia cartella della struttura:
Qualcuno mi può aiutare con questo?
risposte:
2 per risposta № 1Esistono due modi per integrare il pagamento in contrassegno django-oscar
progetto:
Sostituisci applicazione di pagamento:
In questo caso è necessario sostituire i modelli di checkout perché per impostazione predefinitaOscar
don "t or can" t get thecashondelivery
modelli di checkout, almenopayment_details
. Quindi, prima devi sovrascrivere questi file modello e dopo creare un'app e al suo interno aggiungere unapp.py
file in cui si sovrascrive l'applicazione di pagamento comecashondelivery
documentazione dice.Crea una visualizzazione personalizzata e un'app di pagamento:
Puoi vedere dentrodjango-oscar-paypal
pacchetto di integrazione un esempio sandbox per l'integrazionepaypal
conOscar
. In questo pacchetto puoi vedere che usano un'app di pagamento per sostituire l'app di pagamento predefinita; all'interno di questa app hanno la precedenzaview.py
file eapp.view
file; sovrascrivere modelli e sovrascrivereapp.py
file.
Quindi, possiamo fare lo stesso per django-oscar-cash-on-delivery
, così:
un. Crea una nuova applicazione chiamata checkout
dentro il apps
applicazione se vuoi, o qualcuno come te. Questa applicazione conterrà solo le viste e il file dell'applicazione.
b. Nel file delle viste inseriremo il file cash-on-delivery
visualizzazioni file, ora è nella cartella sanbox.
c. Nel file dell'app all'interno del checkout dichiariamo l'applicazione di pagamento:
from oscar.apps.checkout import app
from .views import PaymentDetailsView
class CheckoutApplication(app.CheckoutApplication):
payment_details_view = PaymentDetailsView
application = CheckoutApplication()
d. Infine, dichiariamo la nostra app di pagamento come app di pagamento predefinita come documentazione dice.
e. Abbiamo assicurato che l'applicazione sovrascriva l'applicazione di checkout predefinita, nelle impostazioni:
INSTALLED_APPS = + get_core_apps(
[
"apps.checkout",
"apps.shipping"
]
)
Ora puoi pagare con il metodo di pagamento in contrassegno nel tuo progetto Oscar.
Ti consigliamo di utilizzare il secondo metodo perché ti consente di utilizzare più di un metodo di pagamento.
PD:
Quale nuova versione principale abbiamo spostato views.py
file nella cartella sandbox, quindi la prima opzione non funzionerà più. Ma, se vuoi che ritorni, dicci per favore!