当前位置:  开发笔记 > 后端 > 正文

将URL变量传递给基于类的视图

如何解决《将URL变量传递给基于类的视图》经验,为你挑选了1个好方法。

我刚刚开始搞乱基于类的视图,我希望能够从我的类中的URL访问变量.但是我很难让这个工作.我看到了一些答案,但它们都很短暂,我发现它们没有任何帮助.

基本上我有一个网址

url(r'^(?P[0-9]+)/$',
    views.Journal_Article_List.as_view(), 
    name='Journal_Page'),

然后我想ListView用来显示特定期刊中的所有文章.然而,我的文章表通过a链接到日志表journal_id.所以我最终做了以下事情

class Journal_Article_List(ListView):
    template_name = "journal_article_list.html"
    model = Articles
    queryset = Articles.objects.filter(JOURNAL_ID = journal_id)
    paginate_by = 12

    def get_context_data(self, **kwargs):
        context = super(Journal_Article_List, self).get_context_data(**kwargs)
        context['range'] = range(context["paginator"].num_pages)
        return context

但是,journal_id不像函数视图那样传递.从我在上面阅读的主题中可以找到我可以使用的变量访问变量

self.kwargs['journal_id']

但我有点迷失在我应该如何做到这一点上.我已经在类中直接尝试了它,它让我知道self不存在或者通过覆盖get_queryset,在这种情况下它告诉我as_view()只接受已经是类的属性的参数.



1> Alasdair..:

如果您覆盖get_queryset,则可以journal_id从以下URL 访问self.kwargs:

def get_queryset(self):
    return Articles.objects.filter(JOURNAL_ID=self.kwargs['journal_id'])

您可以在文档中阅读有关django动态过滤的更多信息.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有