我将通过在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”根本没有创建。
非常感谢任何想法。谢谢!
答案 0 :(得分:4)
通常,您可以在尚未传递请求的CBV方法中使用self.request。
所以你可以使用
context['temp'] = self.request.GET.get('temp')
在您的get_context_data
方法中,然后完全删除您的get
覆盖方法。