python - Template not rendering properly with if user.is_authenticated for Django -


i'm trying incorporate template tag/inclusion tag sidebar site. main section of page updates when put:

{% if user.is_authenticated %}   <h1> hello {{ user.username }} {% else %}   <h1> hello </h1> {% endif %} 

when try use same principle in template tag/sidebar, seems ignore user.is_authenticated , show 'login' , 'register', when should showing 'logout'.

the body of html (main index page):

{% load kappa_extras %} <body> <div class="container-fluid">   <div class="row">     <div class="col-sm-2" id="side_section">       {% block sidebar %}         {% get_game_list %}       {% endblock %}     </div>   <!--main section-->     <div class="col-sm-10" id="main_section">       {% block body %}       {% endblock %}     </div>   </div> </div> 

the get_game_list function 'kappa_extras':

from django import template kappa.models import game, game_page django.contrib.auth.models import user  register = template.library()  @register.inclusion_tag('kappa/sidebar.html') def get_game_list():     return {'game_list': game.objects.all()} 

and 'kappa/sidebar.html':

<div id="side_default_list">   <ul class="nav">     <li><a href="{% url 'index' %}">kappa</a></li>     {% if user.is_authenticated %}       <li><a href="{% url 'user_logout' %}">log out</a></li>     {% else %}       <li><a href="{% url 'user_login' %}">log in</a></li>       <li><a href="{% url 'register' %}">register</a></li>     {% endif %}  </div> 

i checked few older inquires though none of them working properly. tried putting request def get_game_list(request): said did not receive value argument. how sidebar update when user.is_authenticated?

you need pass user inclusion tag.

@register.inclusion_tag('kappa/sidebar.html') def get_game_list(user):     return {'game_list': game.objects.all(),  'user': user} 

then in template, call tag

{% get_game_list user %} 

alternatively, can set takes_context=true in inclusion tag, can access user template context.

@register.inclusion_tag('kappa/sidebar.html', takes_context=true) def get_game_list(context):     return {'game_list': game.objects.all(),  'user': context['user']} 

in case, don't need pass user template tag more.

{% get_game_list %} 

see the docs more information , other examples.


Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -