Dans ma petite webapp Django, j'ai 4 ou 5 vues/pages. J'ai ajouté l'authentification sur chaque fonction, en la préfixant par @login_required()
.jinja var pas passé au modèle
Sur toutes les pages, je peux afficher la variable user.username
avec Jinja2.
Mais seulement sur une page (displaystats.html), la variable utilisateur est introuvable ou vide ...
Voici mon avis:
@login_required()
def displaystats(request):
try:
listpackages = Packages.objects.all().order_by('-id')
except:
listpackages = None
try:
listprojects = Projects.objects.all()
except Projects.DoesNotExist:
listprojects = None
return render_to_response('displaystats.html', {'listpackages': listpackages})
modèles sont simples: - displaystats. html
<!DOCTYPE html>
<html>
<!-- Head -->
{% include 'head.html' %}
<body>
<!-- Navbar -->
{% with "Dynamic Packages Statistics" as namepage %}
{% include 'navbar.html' %}
{% endwith %}
...
...
navbar.html:
<!-- Navbar -->
<nav class="navbar navbar-default navbar-static-top" role="navigation">
<a class="navbar-brand" href="{% url 'webgui.views.homepage' %}"> MyAPP </a> <p class="navbar-text">{{ namepage }}</p>
{% if user %}
<p class="btn btn-default navbar-btn pull-right" style="margin-right:15px;"> Welcome, {{ user.username }} </p>
<a href="{% url 'logout' %}" class="btn btn-danger navbar-btn pull-right" style="margin-right:15px;"><span class="glyphicon glyphicon-log-out"> Logout </span></a>
{% else %}
<p class="btn navbar-btn pull-right" style="margin-right:15px;"> Welcome, you're unlogged </p>
{% endif %}
J'ai essayé de commenter certaines des lignes (HTML, changement jinja2 « si », ...) mais la page displaystats.html ne savent pas la variable « utilisateur » et je ne comprends pas pourquoi.
Oh oui cela fonctionne avec 'render'. Et merci pour l'explication, cela pourrait être utile :) – Isador