首页 > 解决方案 > Django:'str'对象没有属性'get'

问题描述

我试图有效地制作一个 Reddit 克隆,只是为了练习 Django,我试图用一个简单的整数设置我的 upvote/downvote 系统(upvote 加一,downvote 减一)但是当我点击我的“upvote”或“ downvote”按钮它给了我错误'str' object has no attribute 'get'。我不知道是什么原因造成的,并且与此错误有关的所有其他答案都完全不相关,任何帮助都会很棒。完整追溯:

Traceback (most recent call last):
  File "C:\Users\Andre\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Andre\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\deprecation.py", line 116, in __call__
    response = self.process_response(request, response)
  File "C:\Users\Andre\AppData\Local\Programs\Python\Python37\lib\site-packages\django\middleware\clickjacking.py", line 26, in process_response
    if response.get('X-Frame-Options') is not None:
AttributeError: 'str' object has no attribute 'get'

我的模型:

class post(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    ranking = models.IntegerField(default=0)

我的观点:

class Feed(ListView):
    model = post
    template_name = 'thefeed/feed.html'

def UpvoteView(request, pk):
    selected_post = post.objects.get(pk=pk)
    selected_post.ranking+=1
    selected_post.save()
    return reverse('feed-home')

def DownvoteView(request, pk):
    selected_post = post.objects.get(pk=pk)
    selected_post.ranking-=1
    selected_post.save()
    return reverse('feed-home')

我的网址:

urlpatterns = [
    path('', views.Feed.as_view(), name="feed-home"),
    path('post/<int:pk>/downvote', views.DownvoteView, name='downvote-post'),
    path('post/<int:pk>/upvote', views.DownvoteView, name='upvote-post'),
]

我的 Feed.html(主页):

{% block content %}
<div class="announcement">
    <h5 style="background: yellow;">Forum.Chat is the Internet's home for debate on any topic, keep it civil!</h5>
</div>
<br>
{% for post in object_list %}
    <div style="margin-bottom: 2%;">
        <h3><a href="{% url 'feed-post' post.pk %}">{{post.title}}</a><a href="#"></h3>
        <p><a href="#">By: {{post.author}}</a><a href="{% url 'edit-post' post.pk %}">    Edit Post</a></p>
        <p><a href="{% url 'upvote-post' pk=post.pk %}">Upvote</a><a href="{% url 'downvote-post' pk=post.pk %}">    DownVote</a></p>
    </div>
{% endfor %}
{% endblock %}

标签: pythonpython-3.xdjangodjango-modelsdjango-views

解决方案


你能像这样试试吗:

def UpvoteView(request, pk):
    selected_post = post.objects.get(pk=pk)
    selected_post.ranking = selected_post.ranking +1
    selected_post.save()
    return reverse('feed-home')

你能得到 post.objects.all()


推荐阅读