


So schließen Sie die E-Mail-Benutzerregistrierung und Kontoaktivierung über Ajax in Django ab
In diesem Artikel wird hauptsächlich vorgestellt, wie Django die E-Mail-Benutzerregistrierung und Kontoaktivierung über Ajax durchführt. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz. Werfen wir gemeinsam einen Blick darauf
1. In pycharm, Datei====》Einstellungen====》Projekt:Projektname====》Projektinterpreter====》+====》Suche django-simple-captcha Version auswählen 0,55 oder höher, dann klicken Sie auf die Schaltfläche „Paket installieren“, umzu installieren. 2. Fügen Sie Code zu Projektname/urls.py hinzu:
3. Fügen Sie Registrierungsinformationen in „settings.py“ hinzu
4. Öffnen Sie das Terminal und führen Sie den Befehl „Datenbank aktualisieren“ aus:from django.urls import path,include ...... from users.views import IndexView ...... urlpatterns = [ ...... #配置验证码 path('captcha/',include('captcha.urls')), #首页url path('', IndexView.as_view(), name='index'), ...... ]
5. Erstellen Sie eine neue form.py-Datei im Benutzerverzeichnis:
INSTALLED_APPS = [ ...... 'captcha' ]
python manage.py makemigrations python manage.py migrate
from django import forms from captcha.fields import CaptchaField ...... class RegisterForm(forms.Form): """注册信息的验证""" ...... captcha=CaptchaField(error_messages={'invalid':'验证码错误'}) ......
html
from users.form import RegisterForm class IndexView(View): """首页""" def get(self,request): register_form=RegisterForm() return render(request,'index.html',{'register_form':register_form})
css
js bezieht sich auf die Aktualisierung des Bestätigungscodes (jQuery muss zuerst eingeführt werden)<p class="modal fade" id="register" tabindex="-1" role="dialog"> ...... <!--模态框中关于注册的内容start--> <p class="modal-body"> ...... <P><p style="display: inline-block;width:100px;text-align: center"><b >验证码:</b></p> <!--验证码start--> <p class="cap">{{ register_form.captcha }}</p> <!--验证码end--> </P> {% csrf_token %} </form> <p><p style="margin-left: 100px;background-color: orangered;width:150px;text-align: center"><b></b></p></p> </p> <!--模态框中关于注册的内容end--> ......
<style> .cap{ display: inline-block; width: 280px; height: 36px; } .cap img{ float: right; } </style>
2. Ajax-E-Mail-Registrierung
1 .Der an die Registrierung im Frontend gebundene modale Boxcode lautet wie folgt:
$(function(){ $('.captcha').css({ 'cursor': 'pointer' }); /*# ajax 刷新*/ $('.captcha').click(function(){ console.log('click'); $.getJSON("/captcha/refresh/",function(result){ $('.captcha').attr('src', result['image_url']); $('#id_captcha_0').val(result['key']) }); }); })
CSS
JS-Code im Zusammenhang mit der Ajax-Registrierung:<p class="modal fade" id="register" tabindex="-1" role="dialog"> ...... <p class="modal-body"> <form id="registerform" action="#" method="post"> <p> <p class="re-input"><b>用户名:</b></p> <input type="text" name="user" placeholder="用户名"> <p class="msg"><b id="user-msg"></b></p> </p> <p> <p class="re-input"><b>邮箱:</b></p> <input type="text" name="email" placeholder="邮箱"> <p class="msg"><b id="email-msg">2222</b></p> </p> <p> <p class="re-input"><b >密码:</b></p> <input type="password" name="pwd" placeholder="密码(不少于6位)"> <p class="msg"><b id="pwd-msg">222</b></p> </p> <p> <p class="re-input"><b >确认密码:</b></p> <input type="password" name="pwd2" placeholder="确认密码"> <p class="msg"><b id="pwd-msg2">22</b></p> </p> <P><p class="re-input"><b >验证码:</b></p> <p class="cap">{{ register_form.captcha }}</p> <p class="msg"><b id="captcha-msg">2</b></p> </P> {% csrf_token %} </form> <p><p style="margin-left: 100px;color: white;background-color: green;width:180px;text-align: center"><b id="active-msg"></b></p></p> ...... <button type="button" class="btn btn-primary" id="registerbtn">确认注册</button> ......
<style> .cap{ display: inline-block; width: 280px; height: 36px; } .cap img{ float: right; } .re-input{ display: inline-block; width:100px; text-align: center } .msg{ margin-left: 100px; background-color: orangered; width:180px; text-align: center } </style>
$("#registerbtn").click(function() { $.ajax({ cache:false, type:"POST", url:"{% url 'users:register' %}", dataType:'json', data:$('#registerform').serialize(), //通过id找到提交form表单,并将表单转成字符串 async:true, //异步为真,ajax提交的过程中,同时可以做其他的操作 success:function (data) { //jquery3以后,会将回传过来的字符串格式的data自动json解析不用再使用一遍JSON.parse(data)了,不然反而会在控制台报错 if(data.status){ $('#active-msg').html(data.status); } else{ if(data.user){ username_msg=data.user.toString(); $('#user-msg').html('用户名'+ username_msg); } if(data.email){ email_msg=data.email.toString(); $('#email-msg').html('邮箱'+ email_msg); } if(data.pwd){ password_msg=data.pwd.toString(); $('#pwd-msg').html('密码'+ password_msg); } if(data.captcha){ captcha_msg=data.captcha.toString(); $('#captcha-msg').html(captcha_msg); } msg=data.__all__.toString(); $('#active-msg').html(msg); } } }); });
$("input").bind('input propertychange', function() { $('#login-fail').html(''); $('#user-msg').html(''); $('#email-msg').html(''); $('#pwd-msg').html(''); $('#pwd-msg2').html(''); $('#captcha-msg').html(''); });
from django import forms from captcha.fields import CaptchaField from .models import UserProfile class RegisterForm(forms.Form): """注册信息的验证""" user = forms.CharField(required=True, error_messages={'required': '用户名不能为空.'}) email=forms.EmailField(required=True,error_messages={'required': '邮箱不能为空.'}) pwd = forms.CharField(required=True, min_length=6, error_messages={'required': '密码不能为空.', 'min_length': "至少6位"}) pwd2 = forms.CharField(required=True, min_length=6, error_messages={'required': '密码不能为空.', 'min_length': "至少6位"}) captcha=CaptchaField(error_messages={'invalid':'验证码错误'}) def clean(self): '''验证两次密码是否一致''' p1=self.cleaned_data.get('pwd') p2=self.cleaned_data.get('pwd2') if p1!=p2: raise forms.ValidationError('两次输入密码不一致') else: return self.cleaned_data
...... from django.http import HttpResponse from .models import UserProfile,ShopProfile from users.form import RegisterForm from django.contrib.auth.hashers import make_password import json class RegisterView(View): """邮箱注册""" def post(self, request): register_form=RegisterForm(request.POST) if register_form.is_valid(): user_name=request.POST.get('user','') email=request.POST.get('email','') pass_word=request.POST.get('pwd','') u=UserProfile.objects.filter(username=user_name).count() e=UserProfile.objects.filter(email=email).count() if u or e: return HttpResponse('{"status":"该用户名或邮箱已被占用!"}') else: user_profile=UserProfile() user_profile.username=user_name user_profile.email=email user_profile.password=make_password(pass_word) user_profile.is_active=False user_profile.save() return HttpResponse('{"status":"注册成功请去邮箱激活!"}') msg=register_form.errors msg=json.dumps(msg) return HttpResponse(msg)
3. E-Mail-Aktivierung für registriertes Konto:
1. Erstellen Sie eine neue Datentabelle, um den E-Mail-Aktivierungscode zu speichern:...... from .views import RegisterView ..... urlpatterns = [ ...... path('register/',RegisterView.as_view(),name='register'), ...... ]
Registrieren Sie die Datentabelle in „users/adminx.py“:
Öffnen Sie das Terminal und führen Sie den Befehl „Datenbank aktualisieren“ aus:class EmailVerifyRecord(models.Model): """邮箱激活码""" code=models.CharField(max_length=20,verbose_name='验证码') email=models.EmailField(max_length=50,verbose_name='邮箱') send_type=models.CharField(verbose_name='验证码类型',choices=(('register','注册'),('forget','忘记密码')), max_length=20) send_time=models.DateTimeField(verbose_name='发送时间',default=datetime.now) class Meta: verbose_name='邮箱验证码' verbose_name_plural=verbose_name def __str__(self): return '{0}({1})'.format(self.code,self.email)
...... from .models import EmailVerifyRecord ...... class EmailVerifyRecordAdmin(object): list_display = ['code', 'email', 'send_type', 'send_time'] search_fields = ['code', 'email', 'send_type'] list_filter = ['code', 'email', 'send_type', 'send_time'] ...... xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
3. Fügen Sie den Konfigurationscode zum Senden von E-Mails in den Einstellungen hinzu .py:
python manage.py makemigrations python manage.py migrate
4. Aktivieren Sie den SMTP-Dienst von Sina Mailbox, sonst können Sie keine E-Mails automatisch versenden:
from random import Random from users.models import EmailVerifyRecord from django.core.mail import send_mail from xyw.settings import EMAIL_FROM def random_str(randomlength=8): str='' chars='AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' length=len(chars)-1 random=Random() for i in range(randomlength): str+=chars[random.randint(0,length)] return str def send_register_email(email,send_type='register'): email_record=EmailVerifyRecord() code=random_str(16) email_record.code=code email_record.email=email email_record.send_type=send_type email_record.save() email_title='' email_body='' if send_type=='register': email_title='雪易网注册激活链接' email_body='请点击下面的链接激活你的账号:http://127.0.0.1:8000/active/{0}'.format(code) send_status=send_mail(email_title,email_body,EMAIL_FROM,[email]) if send_status: pass elif send_type=='forget': email_title = '雪易密码重置链接' email_body = '请点击下面的链接重置你的密码:http://127.0.0.1:8000/reset/{0}'.format(code) send_status = send_mail(email_title, email_body, EMAIL_FROM, [email]) if send_status: pass
EMAIL_HOST='smtp.sina.cn' EMAIL_PORT=25 EMAIL_HOST_USER='xxxxxxxx@sina.cn' #你的邮箱 EMAIL_HOST_PASSWORD='********' EMAIL_USE_TLS=False EMAIL_FROM='xxxxxxx1@sina.cn' #同样是你的邮箱,跟上面都是发信者邮箱 #我用的新浪的,也可以用别的
6. Registrieren Sie in „users/views.py“ die Klasse „RegisterView(View)“ . Fügen Sie einen Code zum Senden von Aktivierungs-E-Mails hinzu:
...... from .models import EmailVerifyRecord ...... class ActiveUserView(View): """激活账户""" def get(self,request,active_code): all_records=EmailVerifyRecord.objects.filter(code=active_code) if all_records: for record in all_records: email=record.email user=UserProfile.objects.get(email=email) user.is_active=True user.save() return render(request,'index.html')
Damit ist die Registrierung und Aktivierung per E-Mail abgeschlossen Oft wird die Aktivierungs-E-Mail automatisch in den Papierkorb verschoben, und wenn Sie in der E-Mail auf den Aktivierungslink klicken, werden auch einige Warninformationen angezeigt. Man kann sagen, dass die Registrierung per E-Mail nicht so gut ist wie die Registrierung per SMS, aber... es spart Geld! ^_^
...... from apps.utils.email_send import send_register_email ...... class RegisterView(View): """邮箱注册""" def post(self, request): ...... user_profile.save() #发送邮件代码start send_register_email(email,'register') #发送邮件代码end return HttpResponse('{"status":"注册成功请去邮箱激活!"}')
Verwandte Empfehlungen:
Detaillierte Erläuterung des Authentifizierungsmoduls von Django (Benutzerauthentifizierung)class LoginView(View): """用户登录""" def post(self,request): user_name=request.POST.get("username","") pass_word=request.POST.get("pwd","") user=authenticate(username=user_name,password=pass_word) if user is not None: #验证账户是否已经激活start if user.is_active: login(request,user) return HttpResponse('{"status":"success"}') else: return HttpResponse('{"status":"fail","msg":"账户未激活"}') #验证账户是否已经激活end else: return HttpResponse('{"status":"fail","msg":"用户名或密码错误"}')
Das obige ist der detaillierte Inhalt vonSo schließen Sie die E-Mail-Benutzerregistrierung und Kontoaktivierung über Ajax in Django ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Dieser Artikel simuliert den Registrierungsprozess einer Kryptowährungshandelsplattform (oder einer ähnlichen Plattform) namens "Sesam Open Door", wobei sich die drei Schritte der Registrierung, der KYC -Zertifizierung und der verbindlichen Zahlungsmethoden konzentriert, und betont, wie wichtig es ist, eine formelle Plattform auszuwählen, persönliche Informationen zu schützen und die Sicherheit zu finanzieren. Der Artikel beschreibt die spezifischen Vorgänge jedes Schritts, z. B. den Besuch der offiziellen Website, um die Identität zu überprüfen, Identitätszertifikatdokumente zu vervollständigen, um die KYC -Authentifizierung zu vervollständigen, eine Bankkarte zu verbinden, und erinnert die Benutzer daran, dass sie sich vor Phishing -Websites und Betrugsrisiken befassen und ihre eigenen Rechte und Interessen schützen. Der Artikel enthält auch einen Link zur offiziellen Website -Adresse, die für Benutzer schnell zugänglich ist.

OKX Ouyi ist eine führende Kryptowährungs -Handelsplattform. Dieser Artikel enthält detaillierte Schritte, um Sie zum Registrieren eines OKX Ouyi Official -Website -Kontos zu führen. Sie erfahren, wie Sie auf die offizielle Website zugreifen, die Registrierungsmethode auswählen, die erforderlichen Informationen eingeben und den Registrierungsprozess abschließen. Der Artikel enthält auch Informationen zu Vorsichtsmaßnahmen, z. B. die Bedeutung der Verwendung realer persönlicher Informationen und der Festlegung eines starken Kennworts.

Eine detaillierte Einführung in den Anmeldungsbetrieb der Sesame Open Exchange -Webversion, einschließlich Anmeldeschritte und Kennwortwiederherstellungsprozess.

Gateio Exchange-App-Kanäle für alte Versionen, die offizielle Anwendungsmärkte von Drittanbietern, Forum-Communities und andere Kanäle abdecken.

Dieser Leitfaden enthält detaillierte Download- und Installationsschritte für die offizielle Bitget Exchange -App, die für Android- und iOS -Systeme geeignet ist. Der Leitfaden integriert Informationen aus mehreren maßgeblichen Quellen, einschließlich der offiziellen Website, dem App Store und Google Play, und betont Überlegungen während des Downloads und des Kontoverwaltung. Benutzer können die App aus offiziellen Kanälen herunterladen, einschließlich App Store, offizieller Website APK Download und offizieller Website -Sprung sowie vollständige Registrierung, Identitätsüberprüfung und Sicherheitseinstellungen. Darüber hinaus deckt der Handbuch häufig gestellte Fragen und Überlegungen ab, wie z.

Gate.io (Sesam Open Door) ist die weltweit führende Kryptowährungsprüfung. Das Tutorial umfasst Schritte wie Kontoregistrierung und Anmeldung, KYC -Zertifizierung, Fiat -Währung und digitale Währungsaufladung, Handelspaarauswahl, Grenz-/Markttransaktionsbestellungen sowie Bestellungen und Transaktionsaufzeichnungen, wodurch Sie schnell auf der Gate.IO -Plattform für den Kryptowährungshandel beginnen. Egal, ob ein Anfänger oder ein Veteran, Sie können von diesem Tutorial profitieren und die Handelsfähigkeiten von Gate.io problemlos beherrschen.

Die Anmeldemethode der Sesam Open Door Trading Platform ist praktisch. Die Plattform kann Sicherheitsüberprüfungsmechanismen wie 2FA ermöglichen, um die Sicherheit der Kontos zu gewährleisten.

Handel mit digitaler Währung: Anlagestrategien, die mit hohen Renditen und potenziellen Risiken koexistieren. Der Vertragshandel verwendet in der Regel Hebelwirkung, mit potenziellen Renditen höher als der Spot -Handel, aber auch mit höheren Risiken. In diesem Artikel werden gemeinsame Fallstricke im Handel mit digitalem Währung aufgetragen und detaillierte Schritte für den Vertragshandel an Ouyi OKX Exchange liefern. Risiken und Fallen des Handels mit digitalem Währung Es gibt viele Risiken auf dem Markt für digitale Währungsverträge, und Kriminelle oder Plattformen können Regellücken verwenden, um Gewinne zu erzielen. Gemeinsame Fallstricke sind: Preismanipulation: Manipulieren Sie die Marktpreise durch zentralisierten Handel, künstlich erhöhen oder senkte die Preise, um Gewinne zu erzielen. Informationsasymmetrie: Plattform oder Transaktion
