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
PS: So deaktivieren Sie die Remote-Anmeldung des ...
Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...
Warum möchte ich den Inhalt in diesem Bereich orga...
Verwenden Sie HTML-Farbblöcke, um Daten dynamisch...
Wenn Sie eine Netzwerkanfrage senden, werden die ...
Ich werde nicht näher darauf eingehen, wie wichti...
Inhaltsverzeichnis Speicherpoolübersicht 1. Nginx...
Gegeben: Ein Array [1,8,5,4,3,9,2], schreiben Sie...
Inhaltsverzeichnis 1. Ändern Sie die Datei my.cnf...
Mit reinem CSS3 lässt sich ein Schmetterling mit ...
Experimentelle Umgebung: Physische Maschine Windo...
Zu meistern: localStorage, Komponentenkapselung Ä...
In diesem Artikelbeispiel wird der spezifische Co...
„HTML-Validierung“ bezieht sich auf die HTML-Valid...
Um eine Tabelle in HTML zu zeichnen, verwenden Si...