在分支模板django-oscars之后,仪表板不会填充值

时间:2018-06-01 16:44:44

标签: django django-oscar

这是我的view.py of dashboard -

from django.views.generic import TemplateView
class IndexView(TemplateView):
    def get_template_names(self):
    if self.request.user.is_staff:
      return ['mytemplates/index.html']
    else :
      return ['dashboard/index_nonstaff.html','mytemplates/index.html']

所以我成功地分叉了应用并扩展了模板,但由于某种原因,仪表板上没有显示任何值

1

2 个答案:

答案 0 :(得分:3)

您已经定义了一个新的IndexView,它不是Oscar' s IndexView的子类 - 因此模板无法找到任何相关的上下文。你现在拥有的只是一个简单的TemplateView,与奥斯卡没有任何关系。

假设您已按照fork the dashboard app的说明进行操作,那么您需要继承Oscar' IndexView

from oscar.apps.dashboard.views import IndexView as CoreIndexView

# Note - you subclass CoreIndexView, not TemplateView
class IndexView(CoreIndexView):

    def get_template_names(self):
        if self.request.user.is_staff:
            return ['mytemplates/index.html']
        else:
            return ['dashboard/index_nonstaff.html','mytemplates/index.html']

请参阅this bit of the documentation,其中说明了如何执行此操作。

也就是说,如果您要做的只是覆盖模板(而不是任何视图逻辑),那么实际上不需要覆盖视图。只需覆盖奥斯卡的模板as described here - 这样您就可以向项目添加模板yourproject/templates/dashboard/index.html,该模板将优先加载到奥斯卡的默认模板中。

答案 1 :(得分:-1)

我正确地记录了文档中的所有内容,最终弄清楚了错误。在我的settings.py中,我在django-oscars默认模板之前将路径放到我的模板中。

以下是正确方法的片段



TEMPLATES = [  
'DIRS': [OSCAR_MAIN_TEMPLATE_DIR, 
'path to/mytemplates', ],