the views.py не извлекает значение из поля ввода в шаблоне

#python #django

#python #django

Вопрос:

Когда я запускаю следующий код, он показывает ошибку DoesNotExist в ‘post_connected’.

это мой 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 %}
  

Я думаю, что сервер не может извлечь значение из поля ввода. Я не знаю, что я сделал не так. Пожалуйста, помогите мне. Спасибо

Комментарии:

1. Какая ошибка отображается?

2. @Redvelvetpastry выдает ошибку DoesNotExist

3. Что такое ‘post_connected’ в вашем проекте?

4. Вы могли бы попробовать проверить, все ли написано правильно и существует ли оно в вашем коде, и код сохранен, а затем запущен.

5. @Redvelvetpastry ‘post_connected’ — это переменная в моем views.py файл, используемый для объекта get.

Ответ №1:

Выглядит так, как в строке

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

Что у вас есть модель с именем post. Убедитесь, что модель была импортирована в views.py и модель была перенесена перед запуском кода.

Если это сделано, убедитесь, что .get() используется для вызова существующей записи. Согласно документации,

Если нет результатов, соответствующих запросу, get() вызовет исключение DoesNotExist. Это исключение является атрибутом класса модели, к которому выполняется запрос.

Комментарии:

1. Я внедрил модель и также перенес ее. после этого только он выдает ошибку

2. Не могли бы вы добавить структуру каталогов и инструкцию, в которую была импортирована модель?

3. Выполнено. Вы можете видеть это

4. Другим было бы полезно, если бы вы также предоставили ответ

Ответ №2:

Было много полей ввода с тем же идентификатором, что и поле ввода внутри цикла for. Следовательно, он получал несколько значений, и ничего не происходило.