DJANGO - доступ к профилю какого-то пользователя - PullRequest
0 голосов
/ 02 мая 2020

Я работаю над веб-приложением и сейчас разрабатываю часть профилей. Я написал часть, чтобы посмотреть чей-то профиль, и это в основном работает хорошо, за исключением одной вещи. Я могу открыть профиль кому-то, но когда я нажимаю на вкладки, которые перенаправляют на другую часть профиля (эти части включены в блок для хранения основной информации профиля), мой код мгновенно переключается на зарегистрированного пользователя. Есть ли способ получить пользователя на основе куки?

это единственное объявление:

def view_advert(request, pk, title):
    advert = Advert.objects.get(pk=pk)
    return render(request, "advert.html", {'advert':advert})

html

<small>from </small><a href="{% url 'profile' nick=advert.user.username %}">{{advert.user}}</a>

Я открываю профиль человека, который разместил объявление (оно работает)

Вот один из профиля и вкладки:

@login_required
def profile(request, nick):
    user = User.objects.get(username=nick)
    user_profile = Profile.objects.get(user=user)
    return render(request, "users_templates/profile.html", {"user_profile":user_profile})

def profile_adverts(request, user):
    user = User.objects.get(username=user)
    adverts = Advert.objects.filter(user=user)
    context = {
        "objects":adverts,
        "no_data":"No other adverts",
        "user":user
    }
    return render(request, "profile_templates/general_list.html", context)

html из профиля. html для доступа к вкладке:

<a class="nav-link" href="{% url 'all_adverts' user=user %}" role="tab" aria-selected="false">All adverts</a>

Благодарю за помощь.

изменить для @ revliscano

general_list. html

{% extends "users_templates/profile.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block adverts %}
    {% if objects|length > 0 %}
        {% for object in objects %}
            <div class="work-container">
                <h3>{{object.title}}</h3>
                <h4><i class="far fa-calendar-alt"></i>Jan 2017 to <span class="badge badge-info">Current</span></h4>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
            </div>
        {% endfor %}
    {% else %}
        <div class="work-container">
            <h3>{{no_data}}</h3>
        </div>
    {% endif %}
{% endblock adverts %}

profile html:

{% extends "main.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block content %}
<div class="row mt-5">
    <div class="row">
        <div class="col-lg-3 ">
            <div class="card left-profile-card">
                <div class="card-body">
                    <div class="text-center">
                        <img src="{{user_profile.avatar.url}}" alt="" class="user-profile">
                        <h3>{{user_profile.user.username}}</h3>
                        <p>World of Internet</p>
                        <div class="d-flex align-items-center justify-content-center mb-3">
                            <i class="fas fa-star text-info"></i>
                            <i class="fas fa-star text-info"></i>
                            <i class="fas fa-star text-info"></i>
                            <i class="fas fa-star text-info"></i>
                            <i class="fas fa-star text-info"></i>
                        </div>
                    </div>
                    <div class="personal-info">
                        <h3>Personal Information</h3>
                        <ul class="personal-list">
                            <li><i class="fas fa-briefcase "></i><span>Web Designer</span></li>
                            <li><i class="fas fa-map-marker-alt "></i><span> New York</span></li>
                            <li><i class="far fa-envelope "></i><span>like @example.com</span></li>
                            <li><i class="fas fa-mobile "></i><span>1234564343</span></li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-lg-9">
            <div class="card right-profile-card">
                <div class="card-header alert-primary">
                    <ul class="nav nav-pills" id="pills-tab" role="tablist">
                        <li class="nav-item">
                            <a class="nav-link" href="#" role="tab" aria-selected="false">Comments</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#" role="tab" aria-selected="false">All adverts</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#" role="tab" aria-selected="false">Timeline</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#" role="tab" aria-selected="false">Document</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#" role="tab" aria-selected="false">Event</a>
                        </li>
                    </ul>
                </div>
                <div class="card-body">
                    <div class="tab-content" id="pills-tabContent">
                        <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
                            {% block adverts %}
                            {% endblock adverts %}
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
{% endblock %}

1 Ответ

0 голосов
/ 02 мая 2020

Для профиля. html вы передаете профиль пользователя как user_profile в данных контекста, но затем здесь href="{% url 'all_adverts' user=user %}" вы ссылаетесь на него как user (который значение по умолчанию совпадает с request.user, то есть с аутентифицированным пользователем).

Попробуйте изменить его на

<a class="nav-link" href="{% url 'all_adverts' user=user_profile.user.username %}" role="tab" aria-selected="false">All adverts</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...