Divers J'ai implémenté la fonction de connexion, je vais donc revoir la procédure.
Référence: http://docs.djangoproject.jp/en/latest/topics/auth.html#web
Il était relativement facile à mettre en œuvre car il existe des modules pratiques pour la connexion et la déconnexion.
views.py
from django.contrib.auth import authenticate #Module d'authentification
#....
def log_in(req):
from django.contrib.auth import login #Pour se connecter
user = None #Définition temporaire pour empêcher NameError au moment de GET
if req.method=='POST':
uname = req.POST['username'] #Dans le formulaire de connexion
pword = req.POST['password'] #Envoyer et recevoir respectivement
user = authenticate( username=uname,password=pword )
#Authentifiez l'utilisateur avec le nom d'utilisateur et le mot de passe et attribuez le résultat à l'utilisateur variable
if user is not None: #Devenir Aucun si l'authentification échoue
if user.is_active: #Les utilisateurs qui ne sont pas actifs même s'ils existent ne peuvent pas se connecter
login(req,user) #seulement ça. N'oubliez pas l'argument
return HttpResponseRedirect(req.GET['next'])
#À la fin de l'URL/?next=/page/Pour rendre la destination de la redirection dynamique.
contexts = RequestContext(req,{
'request':req.method,
'user':user,
})
template = loader.get_template('blog_in_heroku/login.html')
return HttpResponse( template.render(contexts) )
def log_out(req):
from django.contrib.auth import logout #Pour la déconnexion
logout(req) #Cela semble également nécessiter un objet HttpRequest comme argument
template = loader.get_template('blog_in_heroku/logout.html')
contexts = Context({})
return HttpResponse( template.render(contexts) )
De plus, en suivant l'exemple, j'ai écrit cette fois sans utiliser de raccourcis. Il semble y avoir un raccourci pour l'authentification, donc je pense qu'il peut être écrit beaucoup plus court que cela (voir la page de référence ci-dessus pour plus de détails).
login.html
<html>
<head>
<title>S'identifier</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap-theme.min.css">
<script src="https://code.jquery.com/jquery.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="jumbotron">
<div class="container">
{% ifequal request "POST" %}
{% if not user.is_authenticated %}
<div class="alert alert-danger">
<strong>Les informations d'entrée sont incorrectes.</strong>
</div>
{% else %}<!--Ne bouge pas-->
{% if not user.is_active %}
<div class="alert alert-danger">
<strong>Cet utilisateur a été révoqué.</strong>
</div>
{% endif %}
{% endif %}
{% else %}
<div class="alert alert-info">
<h3><strong>Veuillez s'il vous plaît entrer votre nom d'utilisateur et votre mot de passe.</strong></h3>
</div>
{% endifequal %}
<div class="col-xs-6">
<form class="form-horizontal" role="form" action="" method="post">
{% csrf_token %}
<div class="form-group">
<label for="uname">Nom d'utilisateur</label>
<input type="text" class="form-control input-lg" id="uname" name="username" />
</div>
<div class="form-group">
<label for="pass">mot de passe</label>
<input type="password" class="form-control input-lg" id="pass" name="password" />
</div>
<br/>
<div class="form-group">
<input class="btn btn-info btn-lg" type="submit" value="S'identifier" />
<a type="button" href="/" class="btn btn-warning btn-lg">Annuler</a>
</div>
</form>
</div>
<br/>
</div>
</div>
</body>
</html>
C'est long à cause du script du message d'erreur, mais c'est assez bien s'il se trouve juste à l'intérieur de la balise form. Au fait, la partie marquée \ <! - Ne fonctionne pas-> est ** J'ai essayé en désactivant le compte qui a créé le compte pour les tests, mais cela n'a pas fonctionné **, alors j'ai commenté pour le moment.
logout.html
<html>
<head>
<title>Se déconnecter</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap-theme.min.css">
<script src="https://code.jquery.com/jquery.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="jumbotron">
<div class="container">
<div class="page-header">
<h2>déconnecté.</h2>
</div>
<a type="button" class="btn btn-success btn-lg" href="/">retour à la page principale</a>
<a type="button" class="btn btn-info btn-lg" href="/login/?next=/">Connectez-vous avec un autre compte</a>
</div>
</div>
</body>
</html>
C'est une sorte de décoration. Faites attention uniquement à l'URL du lien "Se connecter avec un autre compte". ** Si vous ne spécifiez pas correctement suivant lors de l'écriture de la fonction d'affichage cette fois, une erreur se produira. ** **
État pour le moment: http://my-1st-django-blog.herokuapp.com/
Recommended Posts