Django Oscar 2.0:Fork Checkout应用后无法运行的问题求助
解决Oscar自定义Checkout App的AppNotFoundError问题
看起来你是在按Oscar的自定义App流程操作,但不小心踩了几个常见的小坑。我来帮你一步步排查解决:
1. 检查自定义Checkout App的继承配置
首先打开custom_apps/checkout/apps.py,确认你的CheckoutConfig类正确继承了Oscar的核心Checkout配置,且name属性设置无误:
from oscar.apps.checkout.apps import CheckoutConfig as CoreCheckoutConfig class CheckoutConfig(CoreCheckoutConfig): name = 'custom_apps.checkout'
这个继承是Oscar复用原App功能的核心,如果这里写错,Oscar就找不到calculators这类依赖模块。
2. 用Oscar的get_core_apps()管理核心App
别手动修改INSTALLED_APPS替换原Checkout App,Oscar推荐用get_core_apps()函数来完成替换,这样能保证内部机制正常运转。修改settings.py里的INSTALLED_APPS部分:
from oscar import get_core_apps INSTALLED_APPS = [ # 保留你的其他Django App,比如django.contrib.admin等 'django.contrib.admin', 'django.contrib.auth', ... ] + get_core_apps(['custom_apps.checkout'])
这样就不用手动注释oscar.apps.checkout了,get_core_apps会自动用你的自定义版本替换原核心App。
3. 确保custom_apps在Python搜索路径中
Django需要能找到你的custom_apps目录,在settings.py开头添加以下代码,把它加入Python的搜索路径:
import os import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(BASE_DIR, 'custom_apps'))
4. 完善__init__.py的配置
确认custom_apps/checkout/__init__.py中有以下内容,让Django正确加载你的App配置:
default_app_config = 'custom_apps.checkout.apps.CheckoutConfig'
如果这个文件是空的,直接添加上面这行代码即可。
5. 验证App是否能被正确识别
先运行以下命令检查Django是否能正常识别你的自定义App:
python manage.py check
如果没有报错,再启动服务器试试:
python manage.py runserver
做完这些步骤,你的自定义Checkout App应该就能正常运行了,之后你就可以安心修改mixin.py里的邮件发送代码啦。
内容的提问来源于stack exchange,提问作者B B
相关产品推荐
相关产品推荐

