1 1、基本表结构
  2 class UserInfo(models.Model):
  3 username = models.CharField(max_lenght=32,db_index=True)
  4 email = models.CharField(max_lenght=32,unique=True)
  5 pwd = models.CharField(max_length=64)
  6 ################ 最后一次发的时间 ################
  7 ptime = models.DateTimeField(auto_add=True)
  8 code = models.CharField(max_length=6)
  9 
 10 """
 11 class Meta:
 12 index_together = [
 13 ('username', 'pwd'),
 14 ]
 15 
 16 unique_together = [
 17 ('username', 'pwd'),
 18 ]
 19 """
 20 
 21 class SendMsg(models.Model):
 22 email = models.EmailField(max_lenght=32,unique=True)
 23 code = models.CharField(max_length=6)
 24 stime = models.DateTimeField()
 25 times = models.IntergarField(default=1)
 26 
 27 SendMsg.objects.create(email='11111111',code='123',stime=datetime.now())
 28 # 特殊语句
 29 obj = SendMsg(email='11111111',code='123',stime=datetime.now())
 30 obj.clean()
 31 obj.save()
 32 # django Admin也是可以的
 33 
 34 ?django的Models字段怎么验证?
 35 
 36 2、登录和注册
 37 - ORM操作
 38 - F 和 Q 
 39 filter(id__gt=1,name='root')
 40 filter(**{"id__gt": 1,...})
 41 filter(Q(Q(id__gt=1)&Q(name="root"))|)
 42 (邮箱&密码)| (用户名&密码)
 43 - 简单倒计时效果
 44 - 验证码
 45 - *** 逻辑性处理 ***
 46 - 注册成功后,自动登录
 47 
 48 a. 分解注册
 49 --- 发送随机验证码
 50 前端
 51 - 获取邮箱框中的内容,并发到后台(Ajax)
 52 - Form验证,只验证一个邮箱
 53 class Foo(forms.Form):
 54 email ...
 55 ret = {'stauts':.., 'summary': ..}
 56 不合法:
 57 ..
 58 合法
 59 ..
 60 - success回调函数:
 61 合法:
 62 跑秒
 63 不合法:
 64 显示错误
 65 
 66 后端:
 67 class BaseResponse:
 68 def __init__(self):
 69 self.status = True
 70 self.summary = None
 71 self.error = None
 72 self.data = None
 73 
 74 class SendMsgForm(forms.Form):
 75 email = EmailField(error_messages={'invalid': '邮箱格式错误'})
 76 
 77 
 78 def msg(request):
 79 #ret = {'stauts': True, 'summary': None, 'error': None, 'data': None}
 80 # return HttpResponse(json.dumps(ret))
 81 
 82 obj = BaseResponse()
 83 
 84 form = SendMsgForm(request.POST)
 85 
 86 if form.is_valid():
 87 # 用户邮箱格式正确
 88 
 89 # 【用户表】中是否已经存在当前邮箱
 90 obj.status = False
 91 obj.summary = "邮箱已被注册"
 92 return return HttpResponse(json.dumps(obj.__dict__))
 93 
 94 
 95 【验证码临时表】
 96 获取当前时间
 97 # 11:11
 98 current_date = datetime.datetime.now()
 99 code = # 生成随机验证码 random
100 
101 
102 如果【验证码临时表】有当前邮箱:
103 ====== 1小时,10个数 ======
104 # 10: 11
105 limit_date = current_date - datetime.datedela(hours=1)
106 # 时间是合理的,次数不合理
107 a = SendMsg.objects.filter(utime__gt=limit_date, times__gt=10).count()
108 # 1小时内次数太多了
109 return 
110 
111 # 10年后
112 b = SendMsg.objects.filter(utime__lte=limit_date).count()
113 # SendMsg.objects.filter(email=email).update(code=code,stime=current_date,times=1)
114 
115 # 
116 SendMsg.objects.filter(email=email).update(code=code,times=F('times') + 1)
117 
118 else119 
120 # 数据库的SendMsg创建一条信息 SendMsg.objects.create(... current_date,times=1)
121 # 发送邮件
122 obj.status = True
123 else:
124 obj.summary = form.errors['email'][0]
125 obj.status = False
126 # obj.__dict__ # {'stauts': True, 'summary': None, 'error': None, 'data': None}
127 
128 return HttpResponse(json.dumps(obj.__dict__))
129 
130 p
131 -------- 注册
132 a. 获取注册表单中的所有信息,Ajax发送
133 $.ajax({
134 url: ...
135 data: {.....},
136 
137 })
138 b. 写Form用于验证用户请求
139 合法: 
140 ..
141 不合法:
142 错误信息返回给用户
143 form = registerForm(request.POSt)
144 if form.is_valid():
145 # 随机验证码进行检查,1分钟内的做的操作
146 【随机验证码的临时表,邮箱,code,code生成的时间】
147 # 获取当前时间 - 1分钟 
148 c. 错误信息的展示:
149 -- 详细错误信息
150 
151 b. 登录
152 访问首页
153 1、商城验证码图片 <img src='/check_code/'/> session['CheckCode'] = code
154 2、用眼看图片,输入图片上的内容
155 3、用户输入的值和session['CheckCode']进行比较
156 4、用户名和密码的验证
157 models.UserInfo.objects.filter(Q(Q(username=u)&Q(pwd=p))|Q(Q(emial=u)&Q(pwd=p)))
158 
159 # {'id': 1,'name': 'root'}
160 
161 con = Q()
162 
163 q1 = Q()
164 q1.connector = 'AND'
165 
166 q1.children.append(('email', e))
167 q1.children.append(('password', p))
168 # Q(Q(email=e)&Q(pwd=p))
169 
170 q2 = Q()
171 q2.connector = 'AND'
172 q2.children.append(('username', _value_dict['user']))
173 q2.children.append(('password', _value_dict['pwd']))
174 # Q(Q(username=u)&Q(pwd=p))
175 
176 con.add(q1, 'OR')
177 con.add(q2, 'OR')
178 
179 models.UserInfo.objects.filter(con)
180 
181 验证码
182 - 页面上是图片
183 - 后台字符串且保存在session
抽屉示例

相关文章:

  • 2021-09-03
  • 2021-10-09
  • 2021-10-05
猜你喜欢
  • 2021-12-14
  • 2021-05-26
  • 2021-11-15
  • 2021-09-28
  • 2021-06-19
相关资源
相似解决方案