views.py没有从模板的输入框中获取值

时间:2020-08-12 17:14:24

标签: python django

当我运行以下代码时,它在“ post_connected”处显示“ DosNotExist”错误。

这是我的views.py

from django.shortcuts import render,redirect
from django.contrib.auth.decorators import login_required
from users.models import profile
from .models import Follow, post, like_post
from django.contrib.auth.models import User
from django.core.paginator import Paginator

def home(request):
    user = request.user
    info = profile.objects.get(user=user)
    follow1 = Follow.objects.filter(follow_user=user)
    follow2 = Follow.objects.filter(user=user)
    follow_by = follow1.count()
    follow_to = follow2.count()

    follows = [user]
    for obj in follow2:
        follows.append(obj.follow_user)
    posts = post.objects.filter(author__in=follows).order_by('-date')

    paginator = Paginator(posts, 10)
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    count = posts.count()

    postid = request.POST.get('post_id')
    post_connected = post.objects.get(id=postid)
    mypost = like_post.objects.filter(user=user, liked=post_connected)
    if mypost.exists():
        liked = False
    else:
        liked = True

    context = {
        'user':user, 
        'liked':liked,
        'post':posts,
        'page_obj': page_obj,
        'follow_by':follow_by,
        'follow_to':follow_to,
        }
    return render(request, 'home.html', context)

现在,这是我的模板视图

{% for posts in page_obj %}
    <div class="posts">
    <img src="{% static 'logo.png' %}" style="width: 17px; height:14px;"> 
    <a href="/users/user/{{posts.author}}/" class="username" style="font-size:18px;">{{posts.author}}</a><br><br>
    <span style="font-weight:bold; font-size:17px;">{{posts.content}}</span><br><br>
    <form action="/like/{{posts.id}}/" method="POST">
        {% csrf_token %}

    <input type="text" value="{{posts.id}}" name="post_id" style="display: none;">

    <button style="background-color: inherit; border:none; outline:none">
        {% if liked %}
        <i class="fa fa-heart" aria-hidden="true" style="color: red;"></i>
        {% else %}
        <i class="fa fa-heart" aria-hidden="true" style="color: lightgrey;"></i>
        {% endif %}
    </button>
    <span style="font-size:12px; float:right"><b>Posted on:</b> {{posts.date | date:"H:i D, d M"}}</span>
    </form>
    </div>
    <br>
    {% endfor %}

我认为服务器无法从输入框中获取值。我不知道我做错了什么。请帮我。谢谢

2 个答案:

答案 0 :(得分:0)

看起来像那一行

post_connected = post.objects.get(id=postid)

您有一个名为post的模型。在运行代码之前,请确保已将模型导入到views.py并已迁移模型。

如果完成,请确保正在使用.get()调用存在的条目。根据文档,

如果没有与查询匹配的结果,则get()将引发一个 DidNotExist异常。此异常是模型的属性 在其上执行查询的类。

答案 1 :(得分:0)

在for循环中有许多与输入框具有相同ID的输入框。因此,它获得了多个值,却没有任何反应。