Comment se connecter à Django?

Je travaille actuellement sur un projet Django pour me familiariser avec Django. En ce moment j'essaye de faire deux modèles, l'un étant la page principale avec un lien vers la page de connexion, qui se connectera à l'utilisateur et retournera au modèle et montrera le contenu supplémentaire (sera manipulé par nginx) et un autre modèle qui ne peut être accessible que lorsque vous êtes connecté. Pour une raison quelconque, mais ne semble pas fonctionner ou disons que la connexion ne fonctionne pas.

Voici le fichier views.py:

from django.shortcuts import render_to_response, get_object_or_404, HttpResponse
from django.contrib.auth import *
from django.contrib.auth.decorators import login_required

def index(request):
        return render_to_response('index.html')

@login_required
def main(request):
    return render_to_response('loginrequired.html')

Et voici le template principal:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<html>
<head>
<title>Django NGINX Test</title>
</head>
<body>

Django NGINX Test




{% if user.is_authenticated %} Log out {{user.username}} {% else %} Log in {% endif %}

 
</body>
</html>

C'est le template login_required:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<html>
<head>
<title>Django NGINX Test</title>
</head>
<body>

Django NGINX Test




Welcome {{user.username}}. You're now logged in as required.

{% if user.is_authenticated %} Log out {{user.username}} {% else %} Log in {% endif %}

 
</body>
</html>

Et last but not least mon modèle de connexion:

<html>
<head>
    <title>User Login</title>
</head>

User Login

{% if form.errors %}
    
Your username and password didn't match. Please try again. {% endif %} <form method="post" action="." > {% csrf_token %}
{{ form.username }}
{{ form.password }} <input type="hidden" name="next" value="/" /> <input type="submit" value="login" /> </form> </body> </html>

I would appreciate any help. I have already studied the Django Tutorial for this, but I didn't get it.

0
Eh bien, quand j'essaie d'accéder au template login_required, il me le montre sans demander de login. Je ne suis pas sûr, si je suis déjà connecté, mais il n'affiche pas mon nom d'utilisateur non plus ou dois-je passer à la vue en quelque sorte?
ajouté l'auteur masterlampe, source
En quoi cela ne fonctionne-t-il pas? Que se passe-t-il lorsque vous essayez d'accéder à la page de connexion requise?
ajouté l'auteur murgatroid99, source
Quelle est l'erreur?
ajouté l'auteur sumit, source

2 Réponses

L'utilisateur est connecté, mais vous ne le transmettez pas au modèle. Les détails de l'utilisateur n'apparaissent donc pas. Assurez-vous de rendre vos modèles avec un RequestContext, ou utilisez le nouveau raccourci render au lieu de render_to_response .

0
ajouté

Vous devez vous assurer que vous incluez le middleware suivant dans votre settings.py :

  • SessionMiddleware
  • AuthenticationMiddleware

Pour vous assurer qu'une variable de contexte nommée utilisateur est disponible pour vos modèles, vous devez vous assurer que le processeur de contexte django.contrib.auth.context_processors.auth est dans votre settings.py .

Plus d'informations peuvent être trouvées dans le Sujet d'authentification Djano .

0
ajouté
+1 pour les raisons @Tom mentionnées, et pour ajouter que vous devriez utiliser le render raccourci pour s'assurer que RequestContext est inclus.
ajouté l'auteur Burhan Khalid, source
Seconder cette réponse: vous rendez les choses plus difficiles qu'elles ne le devraient si vous n'utilisez pas les formes et méthodes listées dans le lien ci-dessus.
ajouté l'auteur Tom, source