Ceci suit de mon autre question, car il faudra probablement une réponse différente.'is_authenticated' retourne toujours false dans le modèle
Le code dans mon modèle retourne toujours faux:
{% if request.user.is_authenticated %}
<p>I'm logged in</p>
{% else %}
<p>I am anonymous</p>
{% endif %}
Je comprends des documents que je dois inclure « django.contrib.auth.context_processors.auth » dans TEMPLATE_CONTEXT_PROCESSORS
en settings.py donc je ont fait comme suit:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.contrib.auth.context_processors.auth", #Added
)
Quant à mon views.py, je me sers du render_to_response()
mais pense que ce peut être l'origine du problème. Je dois aussi passer un utilisateur à partir de la base de données dans le contexte, mais ont ajouté le troisième paramètre context_instance=RequestContext(request)
def public_profile(request, username_in_url):
user = User.objects.get(username = username_in_url)
context = {
'user': user,
}
return render_to_response('public_profile.html', context, context_instance=RequestContext(request))
Pourquoi request.user.is_authenticated
revenir encore faux, même si un utilisateur est connecté? En utilisant la même méthode dans views.py fonctionne correctement par exemple.
if request.user.is_authenticated():
return render_to_response('public_profile.html', context)
else:
return render_to_response('public_profile_anon.html', context)
Cela fonctionne-t-il si vous utilisez plutôt user.is_authenticated dans votre modèle? –
Si je le change en user.is_authenticated alors il a l'effet inverse! il retourne toujours ** vrai **! – Matchday