Django verwendet Pillow, um einfach eine Verifizierungscodefunktion einzurichten (Python)

Django verwendet Pillow, um einfach eine Verifizierungscodefunktion einzurichten (Python)

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

<img src="/verify_code/" alt="驗證碼">

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!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Python verwendet die Pillow-Bibliothek (PIL), um den gesamten Prozess der Codeüberprüfung zu implementieren
  • Das Python3-Kissenmodul implementiert einen einfachen Bestätigungscode
  • Python3 verwendet die Pillow-Bibliothek, um zufälligen Bestätigungscode zu generieren
  • Python3-Kissen generiert ein einfaches Beispiel für ein Bestätigungscode-Bild
  • Python-Beispielcode zum Identifizieren dynamischer Verifizierungscodes durch Pillow

<<:  So funktionieren React Hooks

>>:  Python 3.7-Installationstutorial für MacBook

Artikel empfehlen

Bestimmen Sie anhand von Beispielen, ob das MySQL-Update die Tabelle sperrt

Zwei Fälle: 1. Mit Index 2. Ohne Index Voraussetz...

Detaillierte Erklärung zum Problem der CSS-Klassennamen

Die folgenden CSS-Klassennamen, die mit einer Zah...

Eine kurze Analyse der MySQL-Kardinalitätsstatistiken

1. Was ist die Kardinalität? Mit Kardinalität wir...

Der praktische Prozess des Login-Status-Managements im vuex-Projekt

Inhaltsverzeichnis Werkzeug: Anmeldeszenario: übe...

Ein QQ-Chatroom basierend auf vue.js

Inhaltsverzeichnis Einführung Nachfolgend sehen S...

Zusammenfassung der Docker-Datenspeicherung

Bevor Sie diesen Artikel lesen, hoffe ich, dass S...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.18

Lernziele: Lernen Sie, MySQL-Datenbanken unter de...

Zabbix überwacht den Prozess der Linux-Systemdienste

Zabbix erkennt automatisch Regeln zur Überwachung...

Zusammenfassung der vier Klick-Antwortmethoden von Button

Button wird ziemlich oft verwendet. Hier habe ich...