【发布时间】:2017-10-30 11:35:50
【问题描述】:
我正在尝试将 django-oscar 商店添加到现有的 django 网站。
我的问题是两者的模板在某种程度上发生了冲突,这样我要么可以看到现有的网站,要么可以看到商店,但不能同时看到两者。
这是最重要的 urls.py:
from django.conf.urls import include, url
from django.contrib import admin
from oscar.app import application
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('main.urls')),
# oscar
url(r'^shop/', include(application.urls)),
]
在设置中:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# os.path.join(BASE_DIR, 'templates'),
OSCAR_MAIN_TEMPLATE_DIR
],
# 'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'oscar.apps.search.context_processors.search_form',
'oscar.apps.promotions.context_processors.promotions',
'oscar.apps.checkout.context_processors.checkout',
'oscar.apps.customer.notifications.context_processors.notifications',
'oscar.core.context_processors.metadata',
'main.context_processors.google_analytics'
],
'loaders': [
'django.template.loaders.app_directories.Loader',
'django.template.loaders.filesystem.Loader',
],
},
},
]
如果我切换加载程序的顺序,则无法再访问/查看原始网站(在应用程序“主”中)或 Oscar 商店。所以我不确定我忽略了哪些深奥的细节,并且文档没有涵盖这一点。干杯。
【问题讨论】:
-
具体出了什么问题 - 模板无法完全加载,还是只是渲染了错误的模板?另外,您有什么模板结构 - 您的基本模板的名称是什么?
-
index.html,继承自 base.html,就是一个很好的例子。当我首先设置 app_directories_loader 访问根目录时,它加载正常。当我切换加载器时,它似乎显示了一个来自 Oscar 的 index.html(内容为空白,但有一个 Oscar favicon)。所以基本上渲染了错误的模板,不知何故它们似乎被命名为相同的。不知道如何解决这个问题,因为 Oscar 模板名称不在我的控制范围内。
标签: django django-oscar