Django:在基于类的通用视图ListView中访问HttpRequest

时间:2014-08-19 11:08:56

标签: python django django-class-based-views class-based-views

我将通过在views.py中对ListView进行子类化来实现基于自定义类的通用视图。我的问题是如何在我的子类中访问请求(HttpRequest对象)参数?我所关注的HttpRequest对象是views.py中所有函数的默认请求参数。例如:

def search(request):

为了更清楚,这是我到目前为止所尝试的内容:

** views.py

class CustomListView(ListView):
    temp = ""

    def get(self, request, *args, **kwargs):
        self.temp = request.GET.get('temp')
        return super(CustomListView, self).get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(CustomListView, self).get_context_data(**kwargs)
        context['temp'] = self.temp
        return context

** urls.py

url(r'^temp/$, CustomListView.as_view(queryset=Document.objects.all()[:1],template_name="temp.html")),

** temp.html

{% extends 'base.html' %}
{% block content %}
<h2>{{ temp }}
{% endblock %}

但是当我运行服务器并访问/ temp /(temp.html)时,我所看到的只是“无”。所以意思是,'temp'是“”或“temp”根本没有创建。

非常感谢任何想法。谢谢!

1 个答案:

答案 0 :(得分:4)

通常,您可以在尚未传递请求的CBV方法中使用self.request。

所以你可以使用

    context['temp'] = self.request.GET.get('temp') 

在您的get_context_data方法中,然后完全删除您的get覆盖方法。