1. Importieren Sie das Modul und definieren Sie einen Validierungsstatus aus PIL importieren Image, ImageDraw, ImageFont von django.utils.six importiere BytesIO def verify_code(Anfrage): #Einführung des Zufallsfunktionsmoduls import random #Definieren Sie Variablen für die Hintergrundfarbe, Breite und Höhe des Bildschirms bgcolor = (random.randrange(20, 100), random.randrange( 20, 100), 255) Breite = 100 Höhe = 25 #Bildschirmobjekt erstellen im = Image.new('RGB', (Breite, Höhe), Hintergrundfarbe) #Erstellen Sie ein Pinselobjekt draw = ImageDraw.Draw(im) #Rufen Sie die point()-Funktion des Pinsels auf, um Rauschen für i im Bereich (0, 100) zu zeichnen: xy = (random.randrange(0, Breite), random.randrange(0, Höhe)) füllen = (random.randrange(0, 255), 255, random.randrange(0, 255)) zeichne.Punkt(xy, füllen=füllen) #Definieren Sie den alternativen Wert des Bestätigungscodes str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0' #Wählen Sie zufällig 4 Werte als Bestätigungscodes aus rand_str = '' für i im Bereich (0, 4): rand_str += str1[random.randrange(0, len(str1))] #Schriftobjekt erstellen, Ubuntus Schriftpfad lautet „/usr/share/fonts/truetype/freefont“ Schriftart = ImageFont.truetype('FreeMono.ttf', 23) #Schriftfarbe konstruieren fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255)) #Zeichne 4 Wörter draw.text((5, 2), rand_str[0], font=font, fill=fontcolor) zeichne.text((25, 2), rand_str[1], font=Schriftart, Füllung=Schriftfarbe) draw.text((50, 2), rand_str[2], font=Schriftart, fill=Schriftfarbe) zeichne.text((75, 2), rand_str[3], font=Schriftart, Füllung=Schriftfarbe) #Lösen Sie den Pinsel aus, um zu zeichnen #Für weitere Überprüfungsanfragen in Sitzung speichern.session['verifycode'] = rand_str #Speicherdateioperation buf = BytesIO() #Speichern Sie das Bild im Speicher, der Dateityp ist png im.save(buf, 'png') #Gibt die Bilddaten im Speicher an den Client zurück. Der MIME-Typ ist Bild-PNG gibt HttpResponse zurück (buf.getvalue(), 'image/png') 3. Fügen Sie es direkt in das Bild auf der Webseite ein 4. Verwenden Sie Ajax, um ein Bestätigungskennwort und ein Konto zu erhalten <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Anmelden</title> </Kopf> <Text> <h1 Klasse="anzeigen"></h1> <input type="text" id = Benutzername value="{{username}}"> <br> <input type="text" id = Passwort> <br> <input type="text" id = yum> <a>Bitte geben Sie den Bestätigungscode ein</a> <br> <img src="/verify_code/" alt="Verifizierungscode"> <Eingabetyp="Schaltfläche" ID="Ajax" Wert="ajax login"> <br> <input type="checkbox" id = "ow" name="ow"> Passwort merken<br> <a href="/get_cookies">Klicken Sie hier, um Cookies abzurufen</a> </body> <script src="/static/index/js/jquery-3.3.1.min.js"></script> </html> <Skript> $(Funktion () { $('#Ajax').klick(Funktion () { Benutzername = $('#Benutzername').val(); Passwort = $('#Passwort').val(); ow = $("#ow").val(); yum = $('#yum').val(); $.ajax({ 'URL': '/loginajax', 'Typ': 'Beitrag', 'data': {'username': Benutzername, 'password': Passwort, "lecker":lecker,}, 'Erfolg':Funktion(Daten){ //Bei erfolgreicher Anmeldung wird 1 zurückgegeben. //Gibt 0 zurück, wenn die Anmeldung fehlgeschlagen ist //Verifizierung fehlgeschlagen, returniere 3 wenn (data.res == 1) { $('.show').show().html('Anmeldung erfolgreich') } sonst wenn (data.res == 0) { $('.show').show().html('Anmeldung fehlgeschlagen') } sonst wenn (data.res == 3){ $('.show').show().html('Eingabe des Bestätigungscodes fehlgeschlagen') } } }); }); }); </Skript> Im obigen Ajax werden das Kontokennwort und der Bestätigungscode an den Server gesendet In der Validierungsfunktion yzm = request.POST.get('yum') # Holen Sie sich den Bestätigungscode vaue = request.session['verifycode'] # Speichern Sie den Bestätigungscode in der Sitzung, wenn das Bild generiert wird if yzm !=vaue: #Wenn sie nicht gleich sind, wird 3 zurückgegeben. HTML-Ajax zeigt den Bestätigungsfehler an. return JsonResponse({'res':3}) Ergebnisse: Zusammenfassen Das Obige habe ich Ihnen vorgestellt. Django verwendet Pillow, um einfach die Bestätigungscodefunktion (Python) einzurichten. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: So funktionieren React Hooks
>>: Python 3.7-Installationstutorial für MacBook
Viele fragen sich vielleicht: Muss der Text auf d...
MySQL 5.7.18 Installation und Problemübersicht. I...
Inhaltsverzeichnis Klicken Sie zunächst auf das E...
Inhaltsverzeichnis Schleife - für Grundlegende Ve...
html <div Klasse="nach oben" v-show=...
Ich habe gehört, dass es eine Interviewfrage gibt...
In diesem Artikel wird hauptsächlich erläutert, w...
1. Vorbereitung 1.1 Laden Sie das komprimierte To...
Die Zeit vergeht wie im Flug und in nur sechs Tag...
Methode 1: Um Respin zu verwenden, folgen Sie die...
Beim Laden von Netzwerkdaten wird zur Verbesserun...
Inhaltsverzeichnis Kongruent und inkongruent kong...
Docker ist wirklich cool, vor allem, weil es im V...
1. Aktivieren Sie den Remotezugriff auf den Docke...
Laden Sie das Installationspaket von der offiziel...