django 는 같은 ip 10 분 동안 한 번 만 등록 할 수 있 는 인 스 턴 스 를 실현 합 니 다.
3557 단어 djangoip10 분한 번 등록 하 다
논리:
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 분 동안 한 번 만 등록 할 수 있 는 인 스 턴 스 는 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 여러분 들 이 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.