【问题标题】:django inheriting context variabledjango继承上下文变量
【发布时间】:2014-08-15 14:14:59
【问题描述】:

这是我的观点,我根据过滤器列出了新闻列表...

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

现在在这里我可以下载从 context["something"] 查询的新闻列表。

def CSVView(request):

response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename=somefilename.csv"'

writer = csv.writer(response)


writer.writerow([context["something"])# Here what can I write...

return response

现在在 writer.writerow 的 def CSVView 中,我希望 context["something"] 形成第一个视图。我不知道该怎么做。我想以 csv 格式下载新闻。有人有更好的主意吗?我做错什么了吗??

我试过 def CSVView(request,SingleNewsView): 但它说 def CSVView 只需要 2 个争论 1 个给定的错误。我应该做些什么。如何下载 csv 格式的新闻?

【问题讨论】:

  • 您似乎遗漏了一些东西,如果您想将某些东西从一个视图“传递”到另一个视图,请使用会话 docs.djangoproject.com/en/dev/topics/http/sessions
  • 我可以做 some_val = request.session[context["something"]??
  • 我做了 some_val = request.session.get("something") 并打印了 some_val。但它打印 False。这是为什么 ??我无法获得 context["something"] 的值
  • 您应该完全忽略上下文,请参阅下面的答案

标签: django inheritance


【解决方案1】:

正如我所评论的,您应该忽略上下文的使用,在这种情况下,您需要的是会话,低于您的代码应该如何显示:

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

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2014-10-06
    • 2016-06-01
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多