请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

三个问题

老师您好,本章有如下几个问题想要请教下

  1. 动态验证码登陆这块如果该手机号对应的用户不存在,会主动创建用户,此时的username为空,那如果再次换个手机号登陆,会因为username是唯一索引而报错,这块我能想到的改进办法就是修改数据库username字段或创建用户的时候随记生成一个用户名(类似生成验证码),不知道这块老师有什么建议没
if login_form.is_valid():
  mobile = login_form.cleaned_data['mobile']
  # 验证用户是否存在
  exist_user = UserProfile.objects.filter(mobile=mobile)
  if exist_user:
      user = exist_user[0]
  else:
      # 如果用户不存在,注册新建
      user = UserProfile(mobile=mobile)
      password = generate_code(1, 6)
      user.set_password(password)
      username = generate_code(2,4)
      user.username = username
      user.mobile = mobile
      user.save()
  login(request, user)
  return redirect(reverse('index'))
  1. login_form.captcha和dynamic_form为什么只能存在一个呢,在前端login.html应用已经存在了login_form.captcha,按理说即使动态验证码登陆也可以用,为什么如果验证码错误就不显示了呢,
# form表单
class DynamicLoginForm(forms.Form):
    mobile = forms.CharField(required=True, max_length=11, min_length=11)
    captcha = CaptchaField()

class DynamicLoginPostForm(forms.Form):
    mobile = forms.CharField(required=True, max_length=11, min_length=11)
    code = forms.CharField(required=True,min_length=4, max_length=4)

# view视图
class SendSmsView(View):
    def post(self, request):
        send_form = DynamicLoginForm(request.POST)
        '''

class DynamicLoginView(View):
    def post(self, request):
        login_form = DynamicLoginPostForm(request.POST)  # 
        dynamic_form = DynamicLoginForm(request.POST)
        '''

# 前端login.html
<div class="form-group marb20 blur" id="jsRefreshCode">
    {{ login_form.captcha }}
    {{ dynamic_form.captcha }}
</div>
  1. 这种django的内容大多可以理解,前端login.js那块感觉有点吃力,能看懂每行代码的意思,但是整体理解的话会有欠缺

正在回答

1回答

关于第一个问题:按照课程来设计register view的话,username是不会为空的,新建的用户的username 就是手机号,可以在xadmin 中查看新建用户username字段的值。

0 回复 有任何疑惑可以回复我~
  • Arry_y #1
    因为在mobile login view 中 创建新用户的时候,就已经把username=mobile 了。
    回复 有任何疑惑可以回复我~ 2020-09-08 22:38:51
  • 提问者 慕盖茨8531685 回复 Arry_y #2
    好的,谢谢,这边看了源码发现是我这边的问题,忘记给username设置值了。
    回复 有任何疑惑可以回复我~ 2020-09-09 08:47:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信