ОБНОВЛЕНО, СПАСИБО НА ОБРАТНУЮ СВЯЗЬ: я включаю шаблон, где у меня есть доступ к зарегистрированному пользователю, но я хотел бы иметь возможность доступа к соответствующей записи Person этого пользователя (связанной с моделью профиля, которую я создал для дополнительных полей) ), поэтому я могу показать небольшую ссылку на их страницу в верхней части навигации. Я могу получить эту запись Person для отдельных представлений в views.py, но моя top_nav. html (template или 'частичная' в мирах laravel / rails) включается без использования views.py, поэтому я не уверен, как получить / передать дополнительные элементы в шаблон без views.py (и не хочу повторять передачу человека в КАЖДЫЙ вид, включающий верхнюю навигацию). Я хотел бы иметь возможность добавить метод для пользователей, чтобы я мог получить к нему доступ как user.get_person, но расширение auth.User выглядит как кошмар.
Я создаю свое первое приложение Django. Я могу передать / получить доступ к переменной для пользователя запроса в одном представлении, но не в другом (частичном / шаблонном).
Подробности: у меня есть партиал для моей верхней панели навигации, где я хочу включить ссылку на «страницу человека» для вошедшего в систему пользователя. Я даже передаю пользователя, когда включаю это частичное представление, хотя я не уверен, как получить к нему доступ в views.py. В views.py я могу передать QuerySet для пользователя для представления person_index, используя request.user, но это не доступно в top_nav. Я не уверен, смогу ли я каким-то образом получить пользователя в views.py из него, когда я вызываю этот top_nav из базы. html?
Представление индекса личности настраивается следующим образом:
- person_index. html расширяет базу. html
- база. html включает top_nav . html
- тогда «мясо» представления находится в {% содержании блока%}
См. Views.py ниже: я беру человека за person_index (face_link частично работает), но, очевидно, я не хочу получать / передавать его для КАЖДОГО вида, вместо этого я хочу сделать это один раз и иметь возможность передать его в top_nav. html.
views.py :
def person_index(request):
accessible_branches = get_valid_branches(request)
this_person = get_user_person(request.user).first()
person_list = Person.objects.order_by('display_name')
context = { 'person_list': person_list,
'accessible_branches':accessible_branches, 'this_person': this_person}
return render(request, 'familytree/person_index.html', context)
def get_user_person(user):
try:
this_user_person = Person.objects.filter(profile__user_id=user)
except Profile.DoesNotExist:
this_user_person = None
return this_user_person
top_nav. html: (Я хотел бы иметь возможность получить / передать запись о человеке)
<div class="container">
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<a href="{% url 'dashboard' %}">Home</a>
<a href="{% url 'family_index' %}">Families</a>
<a href="{% url 'person_index' %}">People</a>
{% if this_person %}
{% include "familytree/face_link.html" with person=this_person %}
{% endif %}
</ul>
</div>
</div>
base. html: (пользователь запись доступна «бесплатно», необходимо получить соответствующий профиль__person)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
Our big family tree
{% block title %}
{{ page_title|default:"Untitled Page" }}
{% endblock title %}
</title>
</head>
<body>
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'familytree/style.css' %}">
{# Top nav#}
{% include "familytree/top_nav.html" with user=user %} <br/>
{# Separator line#}
<div class="container-fluid">
<div class="row">
<div class="col-md-10">
<hr class = "line" />
</div>
</div>
</div>
{# Page content#}
<div class="container">
{% block content %}
<p>Placeholder text in base template- this gets replaced with page content.</p>
{% endblock content %}
</div>
</body>
</html>
Есть ли что-то, что мне не хватает, чтобы правильно передать / получить пользователя для этого частичного включения? Есть ли правила о том, кто что может загрузить?