django继承上下文变量
这里是我的看法,我有根据过滤器的新闻列表django继承上下文变量,django,inheritance,Django,Inheritance,这里是我的看法,我有根据过滤器的新闻列表 class SingleNewsView(ListView): model = News form_class = SearchForm template_name = "single_news.html" def get(self, request, pk, **kwargs): self.pk = pk self.pub_from = request.GET.get('pub_date_from',False) sel
class SingleNewsView(ListView):
model = News
form_class = SearchForm
template_name = "single_news.html"
def get(self, request, pk, **kwargs):
self.pk = pk
self.pub_from = request.GET.get('pub_date_from',False)
self.pub_to = request.GET.get('pub_date_to',False)
self.crawlers = request.GET.get('crawler',False)
print self.crawlers
return super(SingleNewsView,self).get(request,pk, **kwargs)
def get_context_data(self, **kwargs):
context = super(SingleNewsView,self).get_context_data(**kwargs)
context["form"] = SearchForm#(self.request.GET)
if self.pub_from and self.pub_to and self.crawlers:
context["something"] = News.objects.filter(category_id=self.pk).filter(published_date__range=(self.pub_from,self.pub_to), crawler=self.crawlers)
else:
context["something"] = News.objects.filter(category_id=self.pk)
return context
现在我可以从上下文[“某物”]下载查询的新闻列表
现在,在writer.writerow中的def CSVView中,我希望第一个视图中包含上下文[“something”]。我不知道怎么做。我想下载csv格式的新闻。谁有更好的主意?我做错什么了吗
我尝试过def-CSVView(request,SingleNewsView):但它说st-def-CSVView只接受2个参数1个给定的错误。我该怎么办。如何下载csv格式的新闻 正如我所评论的,您应该省略上下文的用法,在本例中,您需要的是会话,下面是代码的外观:
class SingleNewsView(ListView):
model = News
form_class = SearchForm
template_name = "single_news.html"
def get(self, request, pk, **kwargs):
self.pk = pk
self.pub_from = request.GET.get('pub_date_from',False)
self.pub_to = request.GET.get('pub_date_to',False)
self.crawlers = request.GET.get('crawler',False)
if self.pub_from and self.pub_to and self.crawlers:
value = News.objects.filter(category_id=self.pk).filter(published_date__range=(self.pub_from,self.pub_to), crawler=self.crawlers)
else:
value= News.objects.filter(category_id=self.pk)
self.request.session.set("somekey",value)
return super(SingleNewsView,self).get(request,pk, **kwargs)
def CSVView(request):
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename=somefilename.csv"'
writer = csv.writer(response)
writer.writerow(self.request.session.get("somekey"))
return response
似乎您缺少了一些内容,如果您想将某个内容从一个视图“传递”到另一个视图,请使用会话。我可以执行一些\u val=request.session[something]”会话吗?我执行了一些\u val=request.session.get(“something”)并打印了一些\u val。但它打印为False。为什么?我无法获取上下文的值[“something”]你应该完全省略上下文,见下面我的答案
class SingleNewsView(ListView):
model = News
form_class = SearchForm
template_name = "single_news.html"
def get(self, request, pk, **kwargs):
self.pk = pk
self.pub_from = request.GET.get('pub_date_from',False)
self.pub_to = request.GET.get('pub_date_to',False)
self.crawlers = request.GET.get('crawler',False)
if self.pub_from and self.pub_to and self.crawlers:
value = News.objects.filter(category_id=self.pk).filter(published_date__range=(self.pub_from,self.pub_to), crawler=self.crawlers)
else:
value= News.objects.filter(category_id=self.pk)
self.request.session.set("somekey",value)
return super(SingleNewsView,self).get(request,pk, **kwargs)
def CSVView(request):
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename=somefilename.csv"'
writer = csv.writer(response)
writer.writerow(self.request.session.get("somekey"))
return response