Django ссылка на страницу профиля конкретного пользователя

У меня есть сайт социальной сети, который позволяет пользователю просматривать страницу профиля другого пользователя, щелкнув его имя пользователя в одном из его сообщений, которое появляется в разделе ленты на моей странице. Я создал представление view_profile, но мне нужно передать в представление имя пользователя нужного пользователя, чтобы показывать только сообщения, активность и т.д., сделанные этим конкретным пользователем. Как мне передать имя пользователя в представление?

view_profile.html

<section id="main_feed_section" class="feed_sections">
    {% for post in posts %}
        <div class="post_main_container">
            <section class="post_title">
                <h1> <a href="{% url 'view_profile' %}">{{ post.user_id.username }}</a>{{ post.title }}</h1>
            </section>

            <section class="post_main_body">
                <p>{{ post.caption }}</p>
            </section>

            <section class="post_footer">
                <p>{{ post.date_posted }}</p>
            </section>
        </div>
    {% endfor %}
</section>

views.py

def view_profile(request):   
    account = "logan9997" #if a post made by logan9997 was clicked
    posts = [post for post in Posts.objects.all()
    if post.user_id.username == account]

    followers = [follower for follower in Relationships.objects.all()
    if follower.acc_followed_id.username == account]

    context = {
        "title":account,
        "posts":posts,
        "followers":followers
    }
    return render(request, "myApp/view_profile.html", context)

Добавьте переменную к вашему представлению:

def view_profile(request, account):
    ...

И урлы:

path('view_profile/<str:account>', ...)

Затем вы можете перейти к url: localhost:8000/view_profile/logan9997.

Вы можете сделать это лучше с помощью User id:

path('view_profile/<int:pk>', ...)

def view_profile(request, pk):
    account = User.objects.get(id=pk).username
    ...

И идите: localhost:8000/view_profile/1

Это очень не в стиле Django:

posts = [post for post in Posts.objects.all()
if post.user_id.username == account]

Вместо этого используйте метод filter():

posts = Posts.objects.filter(user_id__username=account)
# and
followers = Relationships.objects.filter(acc_followed_id__username=account)
Вернуться на верх