Django:在基于类的通用视图ListView中访问HttpRequest
我将要在我的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)时,我看到的都是'None'。这意味着'temp'是""或者'temp'根本没有被创建。
任何建议都非常感谢。谢谢!
1 个回答
7
一般来说,在类视图(CBV)的方法中,如果没有传入请求对象,你可以使用自带的self.request。
所以你可以在
context['temp'] = self.request.GET.get('temp')
这个代码块里使用你的get_context_data
方法,然后完全删除你重写的get
方法。