python - 在Django中单击like按钮时出错
问题描述
我正在尝试向 Django 中的博客文章添加一个赞按钮,但每次我尝试单击赞按钮时都会看到此错误。但是如果我打开管理页面然后返回该站点,它可以正常工作,我不知道为什么会这样。请问有什么帮助吗?
我得到的错误:
TypeError at /like/45 Field 'id' expected a number but got <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x000001BF06424F10>>
查看代码:
def LikeView(request,pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
post.likes.add(request.user)
型号代码:
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)
likes= models.ManyToManyField(User,related_name='blog_post')
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail',kwargs={'pk':self.pk})
网址:
urlpatterns = [
path('', PostListView.as_view(), name='blog-home'),
path('user/<str:username>', UserPostListView.as_view(), name='user-posts'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('post/new/', PostCreateView.as_view(), name='post-create'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
path('about/', views.About, name='blog-about'),
path('like/<int:pk>',LikeView,name='like_post'),
]
模板中的按钮:
<form action="{% url 'like_post' post.pk %}" , method="POST">
{% csrf_token %}
<button
type="submit"
,
name="post_id"
,
value="{{ post.id }}"
,
class="btn btn-primary btn-ms"
>
Like
</button>
解决方案
推荐阅读
- swift - WWDC 2019“Combine in Practice”代码示例中的错误 CombineLatest?
- android - kotlin 中的字符串格式和可变参数
- r - 降价中的R mtext / lines“尚未调用plot.new”
- php - 如何将新值添加到现有数组的开头?
- r - 在 R 中使用 Hmisc 处理缺失值后如何处理“估算”数据类型
- ruby-on-rails - 如何在 Rails5 中添加引用键
- c - C语言指针和数组
- javascript - 如何根据道具获取状态值
- python - 如何生成 json 到 excel 文件?
- python - ImportError:无法导入名称“while_v2”