【问题标题】:How do I pass a variable in the URL to a Django list view?如何将 URL 中的变量传递给 Django 列表视图?
【发布时间】:2020-09-23 03:45:31
【问题描述】:

首先,我想说我已经看到创建here 的帖子。问题是我对 Django 框架仍然很陌生,我在代码中实现这个策略的每一次尝试都失败了。无论如何,我很好奇如何将字符串值从 URL 传递到我的列表视图。在我的例子中,变量名为 item,所以我可以进行过滤查询。这在基于函数的视图上非常容易做到,但我正在努力在这些基于类的视图上做同样的事情。谢谢!

基于类的视图:

class PostListView(ListView):
    
    model = Post.objects.get(subject_name=item)
    template_name = 'blog/home.html'
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 5
    

路由:

path('<str:item>/', PostListView.as_view(), name='post-view')

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以在 PostListView 中添加 get 方法:

    
    def get(self, request, *args, **kwargs):
        item = kwargs[“item”]
        // use the item variable here
        return super().get(request, *args, **kwargs)
    

    如果你需要更正你的上下文,同样的事情:

    
    def get_context_data(self, **kwargs):
        data = super().get_context_data(**kwargs)
        data['item'] = kwargs['item']
        return data
    

    【讨论】:

    • 等一下,您知道我将如何在模板中将 item 变量作为上下文传递吗?
    猜你喜欢
    • 2019-03-23
    • 2020-07-11
    • 2015-09-12
    • 2016-03-26
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多