最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編程django實現(xiàn)同一個ip十分鐘內(nèi)只能注冊一次

 更新時間:2017年11月03日 11:19:52   作者:北漂的雷子  
這篇文章主要介紹了Python編程django實現(xiàn)同一個ip十分鐘內(nèi)只能注冊一次的相關(guān)內(nèi)容,具有一定參考價值。需要的朋友可以了解下。

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

邏輯:

取ip,在數(shù)據(jù)庫找ip是否存在,存在判斷當前時間和ip上次訪問時間之差,小于600不能注冊,到登錄界面,大于600可以注冊,設(shè)計一個數(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ù)前面的邏輯,可以來設(shè)計我們的代碼,

from django.views.generic.base import View
from blog.models import Ip
class 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分鐘內(nèi)只能注冊一次'})
        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'用戶名應(yīng)該是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)構(gòu)建完畢,代碼出來后,有小伙伴會問,你這代碼怎么和我用的不一樣,

我們都是函數(shù)式編程,其實很簡單,我們?nèi)ゼ蒝iew類就可以實現(xiàn)我們的面向?qū)ο蟮木幊蹋趗rl中我們只需要這么來寫我們的代碼。

url(r'^reg$', RegView.as_view(),name='reg'),

這樣我們就可以完成了限制同個ip一段時間的注冊的次數(shù)。

總結(jié)

以上就是本文關(guān)于Python編程django實現(xiàn)同一個ip十分鐘內(nèi)只能注冊一次的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:簡單了解Python中的幾種函數(shù)、Python定時器實例代碼、Python網(wǎng)絡(luò)編程詳解等,有什么問題可以隨時留言,小編會及時回復(fù)大家的。

相關(guān)文章

最新評論

聊城市| 深水埗区| 郸城县| 荆门市| 温州市| 永德县| 德安县| 万盛区| 新巴尔虎右旗| 比如县| 章丘市| 炎陵县| 馆陶县| 天镇县| 徐水县| 临西县| 伊川县| 眉山市| 丰都县| 商水县| 阳东县| 新安县| 缙云县| 明水县| 荣成市| 万源市| 海丰县| 舒城县| 涞水县| 紫云| 农安县| 达尔| 武隆县| 同江市| 武安市| 昭通市| 剑阁县| 高要市| 黄梅县| 额敏县| 淳化县|