簡體   English   中英

DJANGO - 訪問一些用戶的個人資料

[英]DJANGO - accesing some user's profile

我正在開發 web 應用程序,目前我正在開發配置文件部分。 我已經寫了一部分來查看某人的個人資料,這基本上可以正常工作,除了一件事。 我可以打開某人的個人資料,但是當我單擊重定向到個人資料不同部分的選項卡時(這些部分包含在塊中以保留個人資料的主要信息),我的代碼會立即切換到當前登錄的用戶。 有沒有什么辦法可以基於cookies獲取用戶?

這是單個廣告:

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 從 profile.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 %}

簡介 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 %}

對於profile.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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM