国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django實現(xiàn)同一個ip十分鐘內只能注冊一次的實例

2020-02-16 10:35:28
字體:
來源:轉載
供稿:網(wǎng)友

很多小伙伴都會有這樣的問題,說一個ip地址十分鐘內之內注冊一次,用來防止用戶來重復注冊帶來不必要的麻煩

邏輯:

取ip,在數(shù)據(jù)庫找ip是否存在,存在判斷當前時間和ip上次訪問時間之差,小于600不能注冊,到登錄界面,大于600可以注冊,

設計一個數(shù)據(jù)庫來存儲這個ip地址和訪問時間,

class Ip(models.Model): ip=models.CharField(max_length=20) time=models.DateTimeField() class Meta:  verbose_name = u'訪問時間'  verbose_name_plural = verbose_name def __str__(self):  return self.ip

然后去

python manage.py makemigrations

python manage.py migrate

這樣來更新我們的數(shù)據(jù)庫,然后我們運行我們的項目可以在后臺看到我們新注冊的ip的數(shù)據(jù)

我們根據(jù)前面的邏輯,可以來設計我們的代碼,

from django.views.generic.base import Viewfrom blog.models import Ipclass RegView(View): def get(self,request):  ipreques = request.META['REMOTE_ADDR']  try:   ip_c=Ip.objects.get(ip=ipreques)   if ip_c :    if (datetime.datetime.now()-ip_c.time).total_seconds()<600:     return render(request, 'login.html', {'msg': u'10分鐘內只能注冊一次'})    ip_c.time=datetime.datetime.now()    ip_c.save()    return render(request, 'reg.html')  except Exception as e:   new=Ip()   new.ip=str(ipreques)   new.time=datetime.datetime.now()   new.save()   return render(request, 'reg.html') def post(self,request):  username=request.POST['username']  if len(getuser(username))<=0:   return render(request,'reg.html',{'msg':u'用戶名應該是6-16組成'})  passwor1 = request.POST['password']  passwor2 = request.POST['password1']  shouj = request.POST['shouji']  if len(getPhoneNumFromFile(shouj))<=0:   return render(request, 'reg.html', {'msg':u'手機號格式是否正確'})  shouji = User.objects.filter(mobile__exact=shouj)  if shouji:   return render(request, 'reg.html', {'msg': u'手機號已經(jīng)存在'})  youjian = request.POST['email']  if len(getMailAddFromFile(youjian))<=0:   return render(request, 'reg.html', {'msg': u'郵箱格式是否正確'})  use=User.objects.filter(username__exact=username)  if use:   return render(request,'reg.html',{'msg':u'用戶名已經(jīng)存在'})  else:   if passwor1==passwor2:    use1=User()    use1.username=username    use1.password=passwor1    use1.mobile=shouj    use1.email=youjian    use1.save()    return HttpResponseRedirect('login')   else:    return render(request,'reg.html',{'msg':u'請查看密碼是否一致'})  return render(request,'reg.html')

其實這樣,我們的整個過程就已經(jīng)構建完畢,代碼出來后,有小伙伴會問,你這代碼怎么和我用的不一樣,

我們都是函數(shù)式編程,其實很簡單,我們去集成View類就可以實現(xiàn)我們的面向對象的編程,在url中我們只需要這么來寫我們的代碼。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌邑市| 会昌县| 抚顺县| 怀柔区| 西青区| 江西省| 瓮安县| 泾阳县| 镇坪县| 顺平县| 雷山县| 嘉兴市| 刚察县| 红安县| 迭部县| 永寿县| 合川市| 梓潼县| 西城区| 灵寿县| 祥云县| 登封市| 扶风县| 新闻| 兰州市| 家居| 乐亭县| 勃利县| 铜鼓县| 西峡县| 新丰县| 杭锦后旗| 岚皋县| 澎湖县| 高唐县| 通渭县| 甘德县| 乡宁县| 日照市| 武清区| 无极县|