python - 连接列表视图和详细视图 -django
问题描述
我正在尝试创建基于类的详细视图,可以通过单击列表视图项来访问它。问题是它在基于函数的视图中很容易实现,但在基于类的视图中却不能这样做。
模型.py
from django.db import models
import datetime
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=500)
writer = models.CharField(max_length=150,default='my dept')
category =models.CharField(max_length=150)
image = models.ImageField(upload_to='images')
post = models.TextField(max_length=2000)
Date = models.DateField( default=datetime.date.today)
def __str__(self):
return self.title
视图.py
from.models import BlogPost , EDITORIAL_RESPONSIBILITIES , Reviewers ,Confrences
,ABSTRACT_IN_CONFERENCES
class BlogList(ListView):
model = BlogPost
template_name = 'blog/bloglist.html'
context_object_name = 'post'
class BlogDetail(DetailView):
model = BlogPost
template_name = 'blogdetail.html'
网址.py
path('list', BlogList.as_view(), name='list'),
path('(?P<id>\d+)/', BlogDetail.as_view())
listview 模板工作得很好.. 目录结构很好.. listviw.html 和 detail.html 都在 templates/blog/ 下的同一个文件夹中。
列表视图模板
<div class="post-body">
{% for p in post %}
<blockquote>{{p}}</br></br>{{p.Date}}</blockquote>
{% endfor %}
</div><!-- end post-body -->
解决方案
确保目录是好的
templates
--blog
---bloglist.html
---blogdetail.html
添加这个
class BlogDetail(DetailView):
model = BlogPost
template_name = 'blog/blogdetail.html'
def get_context_data(self, *args, **kwargs):
context = super(BlogDetail, self).get_context_data(*args, **kwargs)
post = self.get_object()
context["post"] = post
print(post) #//To check if it's returning the right post
return context
告诉我它是否有效
推荐阅读
- winapi - 我如何知道 PCIDLIST_ABSOLUTE 对象是否是控制面板对象?
- ios - SwiftUI如何在动画期间获取当前值
- flutter - 重置 bloc 中的输入值不会发生
- powershell - powershell CSOM 从 ListItems 获取列表项 ID
- xml - 有没有办法测试和验证同一 XML 文件中标签的内容?
- qt - QSvgRenderer 支持问题
- swiftui - 如果 TextField SwiftUI 中有输入,则启用按钮
- c# - 无法将“System.Collections.Generic.List”类型的对象转换为类型
- node.js - 我正在尝试在 heroku 上部署我的 node.js discord 机器人,但我不断收到错误
- javascript - 为什么 JQuery nearest().remove() 不起作用?