Eu estou trabalhando em projeto e-shop usando django-oscar
e eu tentando adicionar suporte a COD. Estou a usar django-oscar-cash-on-delivery
.
Eu fiz o passos, você pode ver minha configuração:
THIRD_PARTY_APPS = [
"jet.dashboard",
"jet",
"axes",
"cashondelivery",
"django_extensions",
"oscarapi",
"paypal",
"payu",
"rest_framework",
"robots",
"widget_tweaks",
"webpack_loader",
]
E criei um aplicativo chamado apps
e carregado corretamente:
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"
]
)
Dentro apps
pasta eu criei um apps.py
arquivo com este código dentro:
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()
Mas eu não consigo entender porque Oscar não me mostra o modelo de pagamento com dinheiro no método de entrega.
Esta é a minha pasta de estrutura:
Alguém pode me ajudar com isso?
Respostas:
2 para resposta № 1Existem duas maneiras de integrar caixa na entrega em django-oscar
projeto:
Substituir aplicativo de check-out:
Neste caso, é necessário substituir modelos de checkout, porque por padrãoOscar
não pode ou não conseguircashondelivery
modelos de checkout, pelo menospayment_details
. Então, primeiro você precisa substituir esses arquivos de modelo e depois criar um aplicativo e dentro dele adicionar umapp.py
arquivo onde você substituir o aplicativo de check-out comocashondelivery
documentação diz.Crie um aplicativo de visualização e pagamento personalizado:
Você pode ver emdjango-oscar-paypal
pacote de integração um exemplo de sandbox para integrarpaypal
comOscar
. Você pode ver neste pacote que eles usam um aplicativo de checkout para substituir o aplicativo de checkout defaul; dentro deste aplicativo eles substituemview.py
arquivo eapp.view
Arquivo; substituir modelos e anularapp.py
Arquivo.
Então, podemos fazer o mesmo para django-oscar-cash-on-delivery
, assim:
uma. Crie um novo aplicativo chamado checkout
dentro de apps
aplicação, se você quiser, ou alguns como você. Este aplicativo somente conterá as visualizações e o arquivo do aplicativo.
b. No arquivo de vistas, vamos colocar o cash-on-delivery
visualizações arquivo, agora está na pasta sanbox.
c. No arquivo do aplicativo dentro do check-out, declaramos o aplicativo de check-out:
from oscar.apps.checkout import app
from .views import PaymentDetailsView
class CheckoutApplication(app.CheckoutApplication):
payment_details_view = PaymentDetailsView
application = CheckoutApplication()
d. Por fim, declaramos nosso aplicativo de check-out como o aplicativo de checkout padrão documentação diz.
e. Nós garantimos que o aplicativo substitua o aplicativo de check-out padrão, nas configurações:
INSTALLED_APPS = + get_core_apps(
[
"apps.checkout",
"apps.shipping"
]
)
Agora você pode pagar com dinheiro no método de entrega em seu projeto do Oscar.
Recomendamos usar a segunda maneira, porque você pode usar mais de um método para pagamento.
PD:
Que a nova versão master movemos o views.py
arquivo na pasta sandbox, assim, a primeira opção não funciona mais. Mas, se você quiser voltar, diga-nos por favor!