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

Müssen die Texte der Website noch gestaltet werden?

Viele fragen sich vielleicht: Muss der Text auf d...

MySQL 5.7.18 Installations-Tutorial und Problemübersicht

MySQL 5.7.18 Installation und Problemübersicht. I...

Erläuterung synthetischer React-Ereignisse

Inhaltsverzeichnis Klicken Sie zunächst auf das E...

JavaScript-Grundlagen für Schleife und Array

Inhaltsverzeichnis Schleife - für Grundlegende Ve...

Vue erzielt den Top-Effekt durch V-Show

html <div Klasse="nach oben" v-show=...

So fügen Sie schnell 10 Millionen Datensätze in MySQL ein

Ich habe gehört, dass es eine Interviewfrage gibt...

Detailliertes Tutorial zur Installation des Tomcat9-Windows-Dienstes

1. Vorbereitung 1.1 Laden Sie das komprimierte To...

Die heißesten Trends im Webdesign UI im Jahr 2013 Die beliebtesten UI-Designs

Die Zeit vergeht wie im Flug und in nur sechs Tag...

Zusammenfassung der Ubuntu-Sicherungsmethoden (vier Typen)

Methode 1: Um Respin zu verwenden, folgen Sie die...

CSS zum Erzielen des Skeleton Screen-Effekts

Beim Laden von Netzwerkdaten wird zur Verbesserun...

MySQL 8.0.19 Installations-Tutorial

Laden Sie das Installationspaket von der offiziel...