[PYTHON] Blog Django sur heroku: implémentation de la connexion

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.

Tout d'abord, la fonction d'affichage.

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).

Ensuite, écrivez un modèle.

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

Blog Django sur heroku: implémentation de la connexion
Implémentation de la fonction de connexion dans Django
Déployer l'application Django sur Heroku
python + django + scikit-learn + mecab (2) avec heroku
Page DJango publiée sur heroku: Practice
Déployer l'API Django avec heroku (mémo personnel)
Déployer l'application Django sur Heroku [Partie 2]
Réagir → Ajax → Django sur les notes d'implémentation Linux
Déployer l'application Django sur Heroku [Partie 1]
Django Heroku Deploy 1
Redis sur Heroku
Blog sur Nikola
shimehari sur heroku
Django Heroku Deploy 2
mémo de déploiement heroku (Django)
Notes de céleri sur Django
Exécutez Django sur PythonAnywhere
Mémo de déploiement de Django × Postgresql sur Docker vers Heroku
Page DJango publiée sur heroku: Préparation mon point addictif
Hello World avec Django
Notes diverses sur le déploiement de l'application django sur Heroku
Ne perdez pas contre Ruby! Comment exécuter Python (Django) sur Heroku
[Django] Créer un menu déroulant
Implémentation de la fonction de connexion dans Django
Django
Implémentation du bouton like dans Django + Ajax
Blog Django sur heroku: implémentation de la connexion
Réagir → Ajax → Django sur les notes d'implémentation Linux
Implémentation du traitement asynchrone dans Django (Celery, Redis)
[Django] Remarques sur l'utilisation de django-debug-toolbar
Déployer l'application Masonite sur Heroku 2020
Créer un écran de connexion Django
Installez Django sur Mac
Déployer le projet django sur heroku
Hello World (débutant) avec Django
Connectez-vous avec Django Rest Framework
Comment déployer une application Django sur heroku en seulement 5 minutes