gpt4 book ai didi

django - 将 URL 变量传递给基于类的 View

转载 作者:行者123 更新时间:2023-12-02 09:52:12 25 4
gpt4 key购买 nike

我刚刚开始搞乱基于类的 View ,我希望能够从类内的 URL 访问变量。但我很难让它发挥作用。我看到了一些答案,但它们都很短,我发现它们没有任何帮助。

基本上我有一个网址

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

然后我想使用ListView来显示特定期刊中的所有文章。然而,我的文章表通过 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 并不像在功能 View 中那样传递。根据我在阅读的主题中找到的内容,我可以使用访问变量

self.kwargs['journal_id']

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

最佳答案

如果您重写get_queryset,则可以从self.kwargs中的URL访问journal_id:

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

您可以阅读更多关于 django 动态过滤的内容 in the docs .

关于django - 将 URL 变量传递给基于类的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com