Django Oscar 模板覆盖不起作用

Django Oscar Template override not working

我面临 django oscar 模板覆盖问题。我正在使用 Oscar 2.0.3 和 Django 2.2.7

我正在使用文档中提到的方法 1。我的项目结构看起来像

myproject
   cache
   catalogue (I have overridden this app)
   categories 
   images
   templates
      base.html
   myproject
   manage.py

我已将 TEMPLATES 编辑为


import os
location = lambda x: os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', x)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [location('templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'oscar.apps.search.context_processors.search_form',
                'oscar.apps.checkout.context_processors.checkout',
                'oscar.apps.customer.notifications.context_processors.notifications',
                'oscar.core.context_processors.metadata',
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages', 
            ],
        },
    },
]

我正在 base.html 中进行更改,但它们不会在 127.0.0.1:8000/catalogue/ 中复制(127.0.0.1:8000 重定向到此 url)

感谢帮助!谢谢!

您使用的教程适用于旧版本的 Oscar (1.6)。

在 Oscar 2.0 中,模板结构发生了变化。具体来说 base.html 现在是 oscar/base.html。这意味着要覆盖它,您必须在 templates/oscar/base.html 而不是 templates/base.html.

处创建一个文件

这同样适用于所有其他 Oscar 模板。