python - /post/3/comment/'dict' 对象的 TypeError 不可调用
问题描述
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
author = models.CharField(max_length=200)
text = models.TextField()
image = models.ImageField(upload_to='Comment_Pictures', blank=True)
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.text
def get_absolute_url(self):
return '/'
class CommentAddView(LoginRequiredMixin, CreateView):
model = Comment
fields = ['text', 'image']
def form_valid(self, form):
form.instance.author = self.request.user
form.instance.post = Post.objects.get(id=self.kwargs['pk'])
return super().form_valid(form)
class CommentDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
model = Comment
success_url = '/'
def test_func(self):
comment = self.get_object()
if request.user == comment.author:
return True
return False
/post/3/comment/ 'dict' 对象的 TypeError 不可调用请求方法:POST 请求 URL: http://localhost:8000/post/3/comment/ Django 版本:2.1.7 异常类型:TypeError 异常值: 'dict' 对象不可调用
解决方案
该错误准确地告诉您出了什么问题。self.kwargs
是一个字典,但你正在调用它。
你可能的意思是:
data = Post.objects.get(id=self.kwargs['pk'])
推荐阅读
- mule - 使用 PostgresSQL 的 Mulesoft
- mongodb - 计算模式内另一个模型中的文档
- python - 有限资源的有效分配(最大利润,所有可能的组合列表)
- python - Pandas `to_sql` 通过`if_exists = 'append' 给出`Table already exists` 错误
- z3 - Z3 Python 从解决方案中排除跟踪器变量
- javascript - 播放多个视频,例如 tiktok?
- angular - Angular 代理绕过拦截所有请求,无论路径如何
- docker - 如何从 docker 中的 docker 创建的容器访问 HTTP 代理
- react-native - React Native中如何实现圆角上背景组件?
- ms-access - 需要计算报告中的特定值