У меня есть одна проблема с меню пользователей. Итак, я хочу, чтобы аутентифицированный пользователь мог видеть страницу своего профиля и выйти из системы (ссылки) в меню. Он работает (при входе) на индексной странице: index, page1, profile, logout, но, если я иду, например, на стр. 1, я могу видеть в меню: index, page1, login, а не профиль и выход из системы. Как это исправить?Аутентификация пользователя в Django. Проблемы с is_authenticated
в URLs:
url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
url(r'^accounts/logout/$', 'django.contrib.auth.views.logout_then_login'),
url(r'^accounts/profile/$', 'my_app.views.profile'),
в представлениях:
def profile(request):
if not request.user.is_authenticated():
return HttpResponseRedirect("/accounts/login/")
else:
user = request.user.is_authenticated()
return render_to_response('profile.html',locals())
Часть index.html:
{% if user.is_authenticated or request.user.is_authenticated %}
<li><a href="/accounts/profile/">Profile</a></li>
<li><a href="/accounts/logout/">logout</a></li>
{% else %}
<li><a href="/accounts/login/">login</a></li>
{% endif %}
login.html:
{% extends "index.html" %}
{% load url from future %}
{% block application %}
{% if form.errors %}
<p>Try one more time</p>
{% endif %}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="Login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
{% endblock %}
profile.html:
{% extends "index.html" %}
{% block application %}
{% if request.user.is_authenticated %}
<p>Welcome, {{ request.user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
{% endblock %}
page1.html:
{% extends "index.html" %}
{% block application %}
some for loops here
{% endblock %}
просмотров за page1:
def car(request):
all_cars = Car.objects.all().filter(active=1).values('id', 'name')
return render_to_response('page1.html', {'all_cars': all_cars})
использовать кэширование ли? – madjar
'user = request.user.is_authenticated()' - он возвращает True или False, не так ли? Может быть, 'user = request.user'? – Marboni
@madjar, no. @Marboni, 'user = request.user' - заменить во всех файлах? – tim