[PYTHON] Django Blog auf Heroku: Login Implementierung

Verschiedene Ich habe die Anmeldefunktion implementiert, daher werde ich das Verfahren überprüfen.

Referenz: http://docs.djangoproject.jp/en/latest/topics/auth.html#web

Die Implementierung war relativ einfach, da es praktische Module für das An- und Abmelden gibt.

Zunächst die Ansichtsfunktion.

views.py

from django.contrib.auth import authenticate  #Authentifizierungsmodul
#....
def log_in(req):
	from django.contrib.auth import login  #Zum Anmelden

	user = None  #Temporäre Definition, um NameError zum Zeitpunkt von GET zu verhindern

	if req.method=='POST':
		uname = req.POST['username']  #Im Formular für die Anmeldung
		pword = req.POST['password']  #Senden und empfangen
		user = authenticate( username=uname,password=pword )
                #Authentifizieren Sie den Benutzer mit Benutzername und Passwort und weisen Sie das Ergebnis dem variablen Benutzer zu

		if user is not None:  #Werden Sie Keine, wenn die Authentifizierung fehlschlägt
			if user.is_active:  #Benutzer, die auch dann nicht aktiv sind, wenn sie vorhanden sind, können sich nicht anmelden

				login(req,user)  #nur das. Vergiss das Argument nicht

				return HttpResponseRedirect(req.GET['next'])
                                #Am Ende der URL/?next=/page/Um das Umleitungsziel dynamisch zu machen.

	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  #Zum Abmelden
	logout(req)  #Dies scheint auch ein HttpRequest-Objekt als Argument zu erfordern
	
	template = loader.get_template('blog_in_heroku/logout.html')
	contexts = Context({})

	return HttpResponse( template.render(contexts) )

Außerdem habe ich dieses Beispiel nach dem Beispiel geschrieben, ohne Verknüpfungen zu verwenden. Es scheint eine Verknüpfung für die Authentifizierung zu geben, daher kann sie meiner Meinung nach viel kürzer geschrieben werden (Einzelheiten finden Sie auf der Referenzseite oben).

Dann schreibe eine Vorlage.

login.html

<html>
	<head>
		<title>Einloggen</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>Die Eingabeinformationen sind falsch.</strong>
				</div>
					{% else %}<!--Bewegt sich nicht-->
						{% if not user.is_active %}
				<div class="alert alert-danger">
					<strong>Dieser Benutzer wurde widerrufen.</strong>
				</div>
						{% endif %}
					{% endif %}
				{% else %}
				<div class="alert alert-info">
					<h3><strong>Bitte gib deinen Benutzernamen und dein Passwort ein.</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">Nutzername</label>
							<input type="text" class="form-control input-lg" id="uname" name="username" />
						</div>
						<div class="form-group">
							<label for="pass">Passwort</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="Einloggen" />
							<a type="button" href="/" class="btn btn-warning btn-lg">Stornieren</a>
						</div>
					</form>
				</div>
				<br/>

			</div>
		</div>
	</body>
</html>

Aufgrund des Skripts für die Fehlermeldung ist es lang, aber es ist gut genug, nur innerhalb des Formular-Tags. Übrigens ist der mit \ <! - Funktioniert nicht-> gekennzeichnete Teil ** Ich habe versucht, das Konto zu deaktivieren, mit dem das Konto zum Testen erstellt wurde, aber es hat nicht funktioniert **, also habe ich dies vorerst kommentiert.

logout.html

<html>
	<head>
		<title>Ausloggen</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>abgemeldet.</h2>
				</div>
				<a type="button" class="btn btn-success btn-lg" href="/">zurück zur obersten Seite</a>
				<a type="button" class="btn btn-info btn-lg" href="/login/?next=/">Melden Sie sich mit einem anderen Konto an</a>
			</div>
		</div>
	</body>
</html>

Dies ist eine Art Dekoration. Achten Sie nur auf die Link-URL von "Mit einem anderen Konto anmelden". ** Wenn Sie diesmal beim Schreiben der Ansichtsfunktion nicht richtig angeben, tritt ein Fehler auf. ** **.

Zustand im Moment: http://my-1st-django-blog.herokuapp.com/

Recommended Posts

Django Blog auf Heroku: Login Implementierung
Implementierung der Login-Funktion in Django
Stellen Sie die Django-Anwendung auf Heroku bereit
Python + Django + Scikit-Learn + Mecab (2) mit Heroku
DJango-Seite veröffentlicht auf Heroku: Practice
Stellen Sie Django api mit Heroku bereit (persönliches Memo)
Stellen Sie die Django-App in Heroku bereit [Teil 2]
Reagieren Sie → Ajax → Django auf Linux-Implementierungshinweise
Stellen Sie die Django-App in Heroku bereit [Teil 1]
Django Heroku Deploy 1
Redis auf Heroku
Blog auf Nikola
Shimehari auf Heroku
Django Heroku Deploy 2
Heroku-Einsatznotiz (Django)
Sellerie-Notizen zu Django
Führen Sie Django auf PythonAnywhere aus
Memo zur Bereitstellung von Django × Postgresql auf Docker für Heroku
DJango-Seite auf Heroku veröffentlicht: Vorbereitung mein Suchtpunkt
Hallo Welt mit Django
Verschiedene Hinweise zur Bereitstellung der Django-App auf Heroku
Verliere nicht gegen Ruby! Wie man Python (Django) auf Heroku ausführt
[Django] Erstellen Sie ein Pulldown-Menü
Implementierung der Login-Funktion in Django
Django
Implementierung der Like-Schaltfläche in Django + Ajax
Django Blog auf Heroku: Login Implementierung
Reagieren Sie → Ajax → Django auf Linux-Implementierungshinweise
Implementierung der asynchronen Verarbeitung in Django (Sellerie, Redis)
[Django] Hinweise zur Verwendung der Django-Debug-Symbolleiste
Stellen Sie die Masonite-App auf Heroku 2020 bereit
Erstellen Sie einen Django-Anmeldebildschirm
Installieren Sie Django auf dem Mac
Stellen Sie das Django-Projekt für Heroku bereit
Hallo Welt (Anfänger) mit Django
Melden Sie sich mit dem Django Rest Framework an
So stellen Sie eine Django-App in nur 5 Minuten für Heroku bereit