2013-11-11 3 views
1

Привет пытается использовать пользовательский объект в моем базовый шаблоне, но объект пользователя возвращая нулевого значения каждый раз, даже после выхода на стрНевозможно использовать user.username в базовом шаблоне

Пожалуйста, найти свой код здесь:

Просмотров:

def loginView(request): 
    if request.POST: 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username =username, password = password) 
     if user is not None: 
      if user.is_active: 
       login(request, user) 
       return HttpResponseRedirect('/rango/home/') 
     else: 
      print 'No user exist' 
    else: 
     c= {} 
     c.update(csrf(request)) 
     return render_to_response('login.html', c)  

Базовый шаблон

<diV style="float: left;"> 
{% block sidebar %} 
<div> 
{% if user.is_authenticated %} 
<a href="{%url 'addCategory' %}">Add Category</a></br> 
<a href="{%url 'logout' %}">Logout</a> 
{% endif %} 
<a href="{%url 'register'%}">Register</a></br> 
<a href="{%url 'login'%}">Login</a></br> 
<a href="{%url 'about' %}" >About</a></br> 
</div> 
{% endblock %} 
</diV> 
+0

django docs и вы найдете решение, это почти тривиальные вещи. – doniyor

ответ

2

Изменить код

return render_to_response('login.html', c, 
      context_instance=RequestContext(request)) 

Без context_instance Джанго не будет добавлять данные контекста по умолчанию процессоры в контексте шаблона. Таким образом, вы не получаете объект user в шаблоне.

+0

В качестве альтернативы вы можете использовать 'render (request, 'login.html', c)' (где render is от 'django.shortcuts'. –

+0

Не работает для меня, я не могу отправить информацию пользователя с помощью метода HttpResponseRedirect ('/ rango/home /') – user2873552

+0

Я говорю о том после входа в систему Я использую HttpResponseRedirect этим я не удалось отправить информацию о пользователе – user2873552

0

Попробуйте {% if request.user.is_authenticated %} в вашем шаблоне.

+0

Еще его работа после tring this – user2873552

0

Если вы уверены, что процессор django.contrib.auth.context_processors.auth включен, вы должны просто иметь переменную user, доступную в ваших шаблонах.

Этот процессор включен по умолчанию, но вы можете отключить его, если вы перезаписали TEMPLATE_CONTEXT_PROCESSORS в своих настройках.

+0

Нет, я не перезаписал его. – user2873552

Смежные вопросы