django 는 같은 ip 10 분 동안 한 번 만 등록 할 수 있 는 인 스 턴 스 를 실현 합 니 다.

많은 동료 들 이 이러한 문 제 를 가지 고 있 습 니 다.ip 주 소 를 10 분 안에 한 번 등록 하면 사용자 가 중복 등록 을 해서 불필요 한 번 거 로 움 을 가 져 오 는 것 을 방지 할 수 있 습 니 다.
논리:
ip 를 가 져 옵 니 다.데이터 베이스 에서 ip 이 존재 하 는 지 여 부 를 찾 습 니 다.현재 시간 과 ip 의 마지막 방문 시간 차 이 를 판단 하 는 차이 가 존재 합 니 다.600 보다 적 으 면 등록 할 수 없고 로그 인 인터페이스 에 가면 600 보다 크 면 등록 할 수 있 습 니 다.
이 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
이렇게 해서 우리 의 데이터 베 이 스 를 업데이트 한 후에 우 리 는 우리 의 프로젝트 를 실행 하면 배경 에서 우리 가 새로 등록 한 ip 의 데 이 터 를 볼 수 있 습 니 다.
우 리 는 앞의 논리 에 따라 우리 의 코드 를 설계 할 수 있다.

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         '})
    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'       '})
  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'       '})
  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')
사실 이렇게 해서 우리 의 전체 과정 은 이미 구축 되 었 습 니 다.코드 가 나 온 후에 동료 들 이 물 어 볼 것 입 니 다.이 코드 는 왜 저 와 다 릅 니까?
우 리 는 모두 함수 식 프로 그래 밍 입 니 다.사실은 매우 간단 합 니 다.우 리 는 View 류 를 통합 하면 우리 의 대상 을 대상 으로 하 는 프로 그래 밍 을 실현 할 수 있 습 니 다.url 에서 우 리 는 이렇게 우리 의 코드 를 써 야 합 니 다.

url(r'^reg$', RegView.as_view(),name='reg'),
이렇게 하면 우 리 는 같은 ip 의 한 동안 의 등록 횟수 를 제한 할 수 있다.
이상 의 django 가 같은 ip 을 실현 하 는 데 10 분 동안 한 번 만 등록 할 수 있 는 인 스 턴 스 는 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 여러분 들 이 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기