2011-10-25 2 views
-1

dans views.py:mon avis de connexion ne fonctionne pas

def login(request): 
    if 'username' in request.POST and 'password' in request.POST: 
     user=User.objects.get(Username__exact=request.POST['username'],Password__exact=request.POST['password']) 
     request.session['username']=user.Username 
     request.session['lastlogin']=user.Lastlogin 
     return render_to_response('airAgency/login.html',{'user':user}) 
    return render_to_response('airAgency/login.html') 

dans mon modèle:

<form action="." method="POST" style="font-family: Tahoma; font-size: 12px"> 
<center><div dir="rtl" style="width:250px; height: 85px;"> 
    <div style="float:right;"> 
     <table style="width: 100%;"> 
      <tr> 
       <td> 
        UserName : 
       </td> 
       <td> 
        <input id="username" name="username" type="text"/>&nbsp; 
       </td> 
      </tr> 
      <tr> 
       <td> 
        &nbsp;<label>Password: </label>&nbsp;</td> 
       <td> 
        <input id="password" name="password" type="password" />&nbsp; 
       </td> 
      </tr> 
      <tr> 
       <td> 
    <input type="submit" value="Login" />&nbsp; 
       </td> 
       <td> 
        <input id="Checkbox1" type="checkbox" />&nbsp; 
       remember me</td> 
      </tr> 
     </table> 
    </div> 
</div></center> 
</form> 

J'entrez un nom d'utilisateur/mot de passe droit, mais cela ne revient pas à l'utilisateur me , en fait je vérifie si l'utilisateur est retourné au template, mais il ne retourne jamais à mon template et bien sur il n'y a pas d'erreur! Quel est le problème avec merci d'avance pour toute aide

Répondre

1

Ce formulaire fonctionne-t-il réellement? Vous avez besoin d'un bouton de soumission. Changer le Button1 à un type de "soumettre" au lieu de "bouton".

D'autres choses à vérifier sont que vous avez réellement un utilisateur dans la base de données, et que vous tapez le nom d'utilisateur et mot de passe correctement, et sensible à la casse.

+0

oui, l'utilisateur a raison, et j'ai changé le type à soumettre, mais ça ne marche pas encore !! –

+0

OK, alors avez-vous essayé de passer en revue pour voir les erreurs de partie encore? Essayez d'envoyer des données de test à votre modèle, par exemple, quelle que soit la valeur de request.POST ['nom d'utilisateur'], pour vous assurer que votre formulaire fonctionne. Il suffit de déboguer le code pour savoir quel chemin logique il descend et quelles données il a quand il le fait. – Jordan

+0

oh! J'ai fait une erreur, j'ai raison. Je ne suis pas d'accord: D –

1

Il ne semble pas que vous vérifiez que user est renvoyé. Pour vérifier si user est retourné à votre modèle, placez {{user}} quelque part dans votre modèle.

+0

ouais, je l'ai tapé, mais je n'ai pas mis son code ici, maintenant j'édite ma question! –

7

NE PAS UTILISER CECI.

Vous avez créé votre propre modèle utilisateur et semble stocker des mots de passe en texte brut. C'est très dangereux. Ne fais pas ça. Django est doté d'un framework d'authentification utilisateur intégré, fully documented here, qui permet de hacher correctement les mots de passe pour la sécurité et inclut des formulaires de connexion. Utilisez cela à la place. Même si vous avez besoin de plus de champs, utilisez quand même le modèle utilisateur intégré et créez un modèle UserProfile qui inclut vos champs supplémentaires.

+1

donnerait cette réponse plusieurs upvotes si possible. – RyanBrady

+0

Tout à fait d'accord avec vous. Cependant, le problème qu'il a fini par avoir n'avait rien à voir avec le fait qu'il s'agissait d'un formulaire de connexion, et cela aurait été un problème quel que soit le type de formulaire qu'il écrivait. Donc, une combinaison de la sécurité de votre réponse avec le changement rapide de ma réponse est la bonne solution. – Jordan