如何在 django 的基于类的视图中将值传递给模板?

Posted

技术标签:

【中文标题】如何在 django 的基于类的视图中将值传递给模板?【英文标题】:How to pass a value to the template in class based views in django? 【发布时间】:2020-12-23 19:34:36 【问题描述】:

我想将变量的值发送到PostDetail 模板, 这是views.py文件的功能

class PostDetailView(DetailView):
    model = Post
    def get_object(self):
        obj = super().get_object()
        obj.view_count += 1
        obj.save()
        return obj

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(**kwargs)
        texts = self.object.content
        Read_Time=get_read_time(texts)
        print(Read_Time)
        return context

这是终端的输出:-

[04/Sep/2020 19:29:04] "GET /post/this-blog-contains-an-image-with-it/ HTTP/1.1" 200 6089
0:02:00
[04/Sep/2020 19:29:24] "GET /post/this-blog-contains-an-image-with-it/ HTTP/1.1" 200 6089

我想将0:02:00 发送到我的模板,我该如何实现?

【问题讨论】:

这能回答你的问题吗? Django passing variables to templates from class based views 【参考方案1】:

我更愿意在 Post 模型中创建一个方法为

class Post(models.Model):
    # your fields
    
    def read_time(self):
        return get_read_time(self.content)

然后你可以通过

访问模板中的读取时间
 object<b>.read_time</b> 

【讨论】:

以上是关于如何在 django 的基于类的视图中将值传递给模板?的主要内容,如果未能解决你的问题,请参考以下文章

Django - 将变量从基于类的视图传递到模板

在 Django 中将值传递给 Bootstrap 模式

基于 Django 类的“method_splitter” - 分别传递 2 个 slug 作为模型名称和字段值

如何在基于类的视图中传递 URL 中的变量

如何正确地将参数传递给 Django 中的基于类的视图实例?

Django 基于类的视图是不是自动为模板分配表单值