从 django 中基于类的视图返回上下文

tim*_*i95 2 python django django-views

所以如果我使用像这样的函数视图:

def messageView(request):
    webpages_list = AccessRecord.objects.order_by('date')
    date_dict = {'access_records':webpages_list}
    return render(request,'index.html',context=date_dict)
Run Code Online (Sandbox Code Playgroud)

我的网址解析器如下所示:path('', views.messageView , name='index'),

一切都很好,我的记录按预期显示: 在此输入图像描述

然而,当我尝试像这样使用基于类的视图时:

class IndexView(CreateView):
    form_class = RegisterUserForm 
    template_name = "index.html"

    def index(self,request):
        webpages_list = AccessRecord.objects.order_by('date')
        date_dict = {'access_records':webpages_list}

        return render(request, self.template_name,context=date_dict )
Run Code Online (Sandbox Code Playgroud)

网址就像这样:path('', views.IndexView.as_view(), name='index'),

在这种情况下我什么也没得到,我尝试寻找仅从 django online 中的类视图返回上下文的简单情况,但无济于事。

我到底在这里误解了什么?

T.T*_*kic 6

您可以重写get_context_data方法。

将其放在基于类的视图中:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['access_records'] = AccessRecord.objects.order_by('date')
    return context
Run Code Online (Sandbox Code Playgroud)

它返回一个表示模板上下文的字典。