美文网首页零基础使用Django2.0.1打造在线教育网站
零基础使用Django2.0.1打造在线教育网站(提示):错误贴

零基础使用Django2.0.1打造在线教育网站(提示):错误贴

作者: 啃饼小白 | 来源:发表于2018-08-22 08:51 被阅读9次

    写在前面

    最近有小伙伴们私聊我说出现了很多问题,这里特开一个帖子专门用于错误的指导与交流。首先是说注册和激活有问题,我对此进行了测试,发现没有问题,小伙伴们出现这种问题可能是代码粘贴时的位置出现了错误,请各位小伙伴们自己对比一下代码,注意是否对齐(部分代码进行了完善),这里贴一下代码。

    注册代码

    # 用于实现用户注册的函数
    class RegisterView(View):
        # get方法直接返回页面
        def get(self, request):
            register_form = RegisterForm()
            return render(request, "register.html", {'register_form': register_form})
    
        def post(self, request):
            # 类的实例化需要一个字典dict参数,而前面我们就知道request.POST是一个QueryDict,所以可以直接传入POST中的信息
            register_form = RegisterForm(request.POST)
            if register_form.is_valid():
                user_name = request.POST.get("email", "")
                if UserProfile.objects.filter(email=user_name):
                    # register_form回填信息必须有,msg是信息提示
                    return render(request, 'register.html', {'register_form': register_form}, {'msg': '该邮箱已被注册过了'})
    
                # password为前端页面name的返回值,取到用户名和密码我们就开始进行登录验证;取不到时为空。
                pass_word = request.POST.get("password", "")
                # 实例化一个user_profile对象,存入前端页面获取的值
                user_profile = UserProfile()
                user_profile.username = user_name
                user_profile.email = user_name
    
                # 默认激活状态为False,也就是未激活
                user_profile.is_active = False
    
                # 对password进行加密并保存
                user_profile.password = make_password(pass_word)
                user_profile.save()
                send_register_eamil(user_name, 'register')
                return render(request, "login.html", )
            else:
                return render(request, "register.html", {"register_form": register_form})
    
    

    激活代码

    # 用于实现用户激活操作的函数
    class ActiveUserView(View):
        def get(self, request, active_code):
            # 用于查询邮箱验证码是否存在
            all_record = EmailVerifyRecord.objects.filter(code=active_code)
            # 如果不为空也就是有用户
            active_form = ActiveForm(request.GET)  
            if all_record:
                for record in all_record:
                    # 获取到对应的邮箱
                    email = record.email
                    # 查找到邮箱对应的用户
                    user = UserProfile.objects.get(email=email)
                    user.is_active = True
                    user.save()
                    # 激活成功跳转到登录页面
                    return render(request, "login.html", )
            else:
                return render(request, "register.html", {"msg": "您的激活链接无效", "active_form": active_form})
    
    

    其次是突然所有图片显示不了,我调试发现可能是你上传图片的命名格式出了问题,所以我们的访问地址也要配置:两种形式都可以,不过呢建议大家使用第一种,因为第一种是匹配任意位数,第二种则是贪婪匹配:

    # 第一种
    # 配置文件上传的访问处理url
        re_path('media/(?P<path>\d+)', serve, {"document_root": MEDIA_ROOT})
    # 第二种
    # 配置文件上传的访问处理url
        re_path('media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}),
    

    还有因为我这个是Python3+Django2.0,如果你在部署的时候没有新建虚拟环境,那么你就很容易造成Python版本的使用混乱,而Ubuntu自带的Python版本是2.0系列,因此最好是使用虚拟环境来避免这个错误!

    目前为止就是这几个问题出的错比较多,如果你发现了其他问题,可以在文章底部留言和我交流~~~

    相关文章

      网友评论

        本文标题:零基础使用Django2.0.1打造在线教育网站(提示):错误贴

        本文链接:https://www.haomeiwen.com/subject/avnsbftx.html