Цикл HTML for не забирает переменную, которую я запрашиваю

У меня есть цикл for в моем HTML шаблоне, я хочу, чтобы он отображал определенную информацию для автора постов, но он ничего не отображает:

{% for post.author in post %}
                          <img class="rounded-circle profile-img" src="{{ post.author.profile.image.url }}"/>
                          <div class="media-body">
                            <h2 class="account-heading">{{ view.kwargs.username }}</h2> <!-- only This works -->
                            <p class="text-secondary">{{ post.author.first_name }} {{ post.author.last_name }}</p>
                            <p class="text-secondary">{{ post.author.email }}</p>
                            <div class="container">
                               <p class="lead"><Strong>Sobre mi:</strong></p>
                               <p class="lead">{{ post.author.description }}</p>
                            </div>
                            <br>
                            <p class="text-secondary">Se unió el {{ post.author.date_joined }}</p>
                            <p class="text-secondary">Última vez visto: {{ post.author.last_login }}</p>
                            <p class="mb-0">{{ post.author.about }}</p>
                        </div>
                        {% endfor %}

До того, как я внес эти изменения в цикл for, он работал, но не совсем так, как я хотел. Цикл создан для отображения определенной информации пользователя, поэтому я не могу сделать так, чтобы он отображал одну и ту же информацию более одного раза, поэтому меня не устраивает цикл for здесь:

{% for post in posts %}
                          <img class="rounded-circle profile-img" src="{{ post.author.profile.image.url }}"/>
                          <div class="media-body">
                            <h2 class="account-heading">{{ view.kwargs.username }}</h2> <!-- only This works -->
                            <p class="text-secondary">{{ post.author.first_name }} {{ post.author.last_name }}</p>
                            <p class="text-secondary">{{ post.author.email }}</p>
                            <div class="container">
                               <p class="lead"><Strong>Sobre mi:</strong></p>
                               <p class="lead">{{ post.author.description }}</p>
                            </div>
                            <br>
                            <p class="text-secondary">Se unió el {{ post.author.date_joined }}</p>
                            <p class="text-secondary">Última vez visto: {{ post.author.last_login }}</p>
                            <p class="mb-0">{{ post.author.about }}</p>
                        </div>
                        {% endfor %}

{% for post in posts %} должно работать. Я не понимаю, почему вы не удовлетворены. Вы работаете с PostListView?

Решил проблему, создав новый вид:

class UserProfileView(ListView):
model = Post
template_name = 'forum/user_profile.html'
context_object_name = 'posts'
paginate_by = 1

def get_queryset(self):
    user = get_object_or_404(User, username=self.kwargs.get('username'))
    return Post.objects.filter(author=user).order_by('-date_posted')

Логика заключается в том, что он будет извлекать сообщения пользователей, так что я могу получить информацию о конкретном пользователе с помощью таких команд, как {{ post.author.first_name }}, которые я могу использовать только при извлечении сообщений пользователя с помощью {% for post in posts %}, теперь ключевым фактором для того, чтобы это работало, является пагинация, не имеет значения, сколько сообщений у пользователя, поскольку paginate_by = 1 будет вызывать только одно сообщение, независимо от общего количества сообщений, и поскольку извлекается только одно сообщение, цикл for будет выполняться только один раз, в результате чего вся информация пользователя будет успешно отображена только один раз.

Однако это означает, что мы не будем отображать все сообщения, потому что это непрактично иметь 15 страниц сообщений по одному на каждое сообщение, поэтому вместо этого я решил сосредоточить профиль на информации и настройке пользователя и включить опцию доступа ко всему профилю пользователя, которая ведет нас на страницу, где отображаются только сообщения пользователя.

Вернуться на верх