【发布时间】:2020-05-02 00:16:41
【问题描述】:
Django 专家和爱好者们好!
我有以下情况(源码在文末):
我有一个 DetailView 用于 post 模型的模板(即显示特定帖子实例的详细信息)。在这个模板中,我在模板中有 context_object_name post - 该对象有一个 ID。在这个 DetailView 中,有一个指向另一个 CreateView 模板的 URL 链接。该创建视图适用于 comment 模型。 post 和 comment 之间存在外键关系 - 一个帖子可以有 0 - 多个 cmets。
当我点击 post 的 DetailView 时,我有一个 CreateView 链接以供评论。当用户为帖子撰写评论并点击保存按钮时,我需要在 CreateView 模板中的模板中提供 post.id(我想将其作为隐藏字段发送到表单中以供评论以便 comment 模型在 save() 方法中具有 post.id - 这将涵盖保存 comment 时需要外键)。
现在我的问题的优点:
我想将一个 post.id 从 DetailView 模板发送到 CreateView 模板(这样我就可以将它用作隐藏表单)。问题是,CreateView 的模板没有收到 post.id 以供评论。涵盖我需求的源代码如下:
DetailView的模板(post的),即链接到CreateView的url(用于comment):
<a class="btn btn-danger" href="{% url 'commentpost' post_id=post.id %}">Reagovat</a>
应用程序级 urls.py 的一行处理 commentpost URL:
path('commentpost/<int:post_id>/',CommentPostView.as_view(),name='commentpost')
我在想commentpost URL 的模板应该有{{ post_id }} 值可用......但是,commentpost 模板中的一个是空的->commentpost 模板中的一行:
<tr><td>ID:{{ post_id }}</td></tr>.
CreateView 进行评论:
class CommentPostView(CreateView):
model = Comment
context_object_name = 'comment'
form_class = NewCommentForm
template_name = 'new_comment.html'
评论模型:
class Comment(models.Model):
post = models.ForeignKey(Post,on_delete=models.CASCADE)
author = models.CharField(max_length = 100, choices = DEPARTMENTS)
date_sent = models.DateTimeField()
text = models.TextField(max_length = 255)
基本上流程应该如下:
1) DetailView 模板发送post_id -> 2) urls.py 处理post_id 值 - 调用正确的视图 3) 视图渲染模板和模板接收post_id 值。
我 100% 确定步骤 1) 中的 post_id 值不为空。步骤 1) 的 URL,即 DetailView 如下所示:http://192.168.56.101:8080/detailpost/1360
你们有没有人知道我错过了什么?
非常感谢您的任何建议,请注意。
【问题讨论】:
-
post_id将在CommentPostView中可用,并且由于您在create view中有post_id,因此您不需要在模板中包含它,但是,将其放入您需要使用context data传递它的模板。你能告诉我你的 CreateView 吗? -
您好 Radico,CreateView 已添加到我的原始帖子中。
标签: django django-templates django-urls