我正在学习Django,目前正在构建博客应用程序。我有个问题。我构建了一些功能来添加新帖子和评论新帖子。现在,我正在努力创建删除用户评论的可能性。你知道吗
我将给定注释的id(主键)分配给按钮“delete”,该按钮出现在所有注释字段中,以便知道我要删除哪个注释。但现在我不知道如何在后端访问这个HTML元素并获取这个id
我的html文件的一部分:
{% for comment in comments %}
{% if comment.post == object %}
<div class="article-metadata">
<small>{{ comment.add_date|date:"M/d/Y" }} <b>{{ comment.author }}</b></small>
{% if comment.author == user %}
<a href="#" class="btn btn-danger btn-sm mt-1 mb-1" id="{{ comment.id }}">Delete</a>
{% endif %}
<p>{{ comment.comm_content }}</p>
</div>
{% endif %}
{% endfor %}
我的基于类的视图视图.py我想触摸这个id的地方:
class PostDetailView(DetailView):
model = Post
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['comments'] = Comment.objects.all()[::-1]
return context
# In this function I want to access my comment id and remove this comment from database
def delete_comment(self):
post_to_delete = Post.objects.get(id=my_comment_id)
del post_to_delete
我知道用jquery可以解决这个问题,但我不懂javascript,现在我只想知道如何使用python。谢谢你的提示。你知道吗
我的型号.py文件:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
class Comment(models.Model):
comm_content = models.TextField()
add_date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
def __str__(self):
return f"Comment of post {self.post} posted at {self.add_date}."
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.post.pk})
首先,添加如下URL模式:
接下来,需要一个视图来处理逻辑:
Django的泛型
DeleteView
只有在您向对象发送POST
请求时才会删除该对象,因此我们将在get
中调用post
方法,使其与GET
请求一起工作;不过,一般来说,这不是一个好主意;您应该添加一个确认表单(类似于模态)并从那里发送一个POST
。你知道吗最后,对于模板:
相关问题 更多 >
编程相关推荐