python - Django 'WSGIRequest' 对象没有属性 'Post'
问题描述
我是 django 的新手,我想在帖子上创建一个类似的按钮,但我有这个错误。谢谢!
'WSGIRequest' 对象没有属性 'Post'
这是我的帖子模型:
class Post(models.Model):
created_date = models.DateTimeField()
title = models.CharField(max_length=100)
profile_image = models.ImageField(upload_to='poze', blank=True, null=True)
text = models.CharField(max_length=1000, default='Nimic', blank=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
likes=models.ManyToManyField(UserProfile,related_name='likes',blank=True )
这是我的 html 模板:
{% extends 'base2.html' %}
{% load static %}
{% load rest_framework %}
{% load crispy_forms_tags %}
{% block content %}
{% for post in posts %}
<form method="post" class="form-signin">
<div class="card text-center " style="width: 30rem;">
<img class="card-img-top" src='' alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{post.title}}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{ post.created_date}}</h6>
<p class="card-text">{{post.text}}</p>
<div class="card-footer text-muted">
<a href="{% url 'comments' pk=post.id %}" class="card-link">Comments</a>
<!--<a href="{% url 'like_post' %}" class="card-link" value="{{ post.id }}" name="post_id">Like</a>-->
</div>
</div>
</div>
</form>
<form action="{% url 'like_post' %}" method="post">
{% csrf_token %}
<button type="submit" name="post_id" value="{{ post.id}}">Like</button> //HERE IS THE LIKE BUTTON
</form>
{% endfor %}
{% endblock %}
网址:
url(r'^like/', login_required(views.LikePost), name='like_post'),
看法:
def LikePost(request):
post=get_object_or_404(Post,id=request.Post.get('post_id'))
post.likes.add(request.user)
return HttpResponseRedirect(post.get_absolute_url())
安慰:
系统检查未发现任何问题(0 静音)。2018 年 8 月 12 日 - 16:28:05 Django 版本 2.0.7,使用设置 'DjangoApp.settings' 在http://127.0.0.1:8000/启动开发服务器 使用 CTRL-BREAK 退出服务器。内部服务器错误:/account/like/ Traceback(最近一次调用):文件“C:\Users\Robbi\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception. py”,第 35 行,内部响应 = get_response(request) 文件“C:\Users\Robbi\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py”,第 128 行,在 _get_response response = self.process_exception_by_middleware(e, request) 文件“C:\Users\Robbi\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py”中,第 126 行,在 _get_response 响应 = Wrapped_callback(request, *callback_args, **callback_kwargs) 文件“C:\Users\Robbi\AppData\Local\Programs\Python\Python36\lib\site-packages\django\contrib\auth\装饰师。
解决方案
从Django HttpRequestPost
文档中,我们可以看到请求对象没有属性,但POST
确实如此。
所以,使用request.POST
而不是request.Post
post=get_object_or_404(Post,id=request.POST.get('post_id'))
因此,您的观点是,
def LikePost(request):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
post.likes.add(request.user)
return HttpResponseRedirect(post.get_absolute_url())
推荐阅读
- reactjs - 使用 Async/Await 获取数据时遇到问题
- python - 使用 discord.py 识别并保存特定频道中的 Spotify 链接
- static-site - 十一:在站点地图的永久链接中生成每个类别
- python - 如何从熊猫数据框中的现有列创建新列
- javascript - 页面加载VUE时的onload方法
- php - 为什么我在 Laravel 中收到此错误?错误:-函数 Darryldecode\Cart\Cart::updateQuantityRelative() 的参数太少
- api - 获取授权码流的 Oauth 2.0 令牌
- java - if 语句中的 Java 数组未按预期工作
- react-bootstrap - 使 FontAwesomeIcon 在按钮中居中
- tensorflow - 如何使用 freeze_interference_graph.pb 创建 Keras 模型?