python - 如何从基于类的视图中将模型类属性作为上下文传递
问题描述
我想将Post
模型title
作为上下文从我的基于类的视图中传递给模板PostDetailView
。这个标题上下文将是我的模板的标题。我怎么能做到这一点?所有必要的代码都在下面给出请帮助。
模型.py:
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=150)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return f'{self.author}\'s Post'
视图.py:
from django.shortcuts import render
from .models import Post
from django.contrib.auth.decorators import login_required
from django.views.generic import ListView, DetailView
from django.utils.decorators import method_decorator
@method_decorator(login_required, name='dispatch')
class PostListView(ListView):
model = Post
context_object_name = 'posts'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Home'
return context
class PostDetailView(DetailView):
model = Post
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = '?'
return context
解决方案
您不必将标题传递给上下文,因为它已经存在。
在模板中,您可以使用{{ object.title }}
或者
出于某种原因,如果您仍然想覆盖get_context_data
,那么您可以使用self.object.title
,
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = self.object.title
return context
并在模板中{{ title }}
推荐阅读
- python - 蝗虫 io http POST 在所有其他请求中都缺少标头
- rxjs - 具有 redux-observable 和 RxJS 的非严格序列
- c# - 如何在 Stylet 中将视图和视图模型保存在单独的命名空间(和程序集)中
- c# - EF Core 3.1.7 使用具有复合键关系的数据库优先导致 SQL 无效
- powershell - 连接两个字符串以形成现有变量
- json - 查询嵌套 JSON 数组 PostrgreSQL 中的所有元素
- javascript - 通过在 QML 中调用导入的 javascript 函数来设置全局属性
- android - 我正在使用 MPAndroidChartLibrary 并在显示图例时遇到问题
- java - 在 Java Spring 框架中登录控制台是如何工作的
- macos - 无法使用作曲家在 MacBook 上安装 codeception