码迷,mamicode.com
首页 > 其他好文 > 详细

用户注册-01 | Django电商项目

时间:2017-10-27 23:08:31      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:form表单   not   通知   直接   style   for   login   创建   用户   

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 注册
1.在输入用户名,密码,邮箱的表单中;
    # 用户就算不遵守前端验证提示,也可以提交信息;
    # 所以我们要在后台视图中添加判断校验信息,驳回输入有误的用户;
    1.将form表单action向视图发送请求:
        <form id =reg_form method="post" action="{% url ‘users:register_handle‘ %}">
    2.在views.py中添加这个视图,来处理注册信息
        # 定义一个视图处理注册信息
        def register_handle(request):
            # 检测输入的参数的格式,字数是否合法
            # 如果合法,在数据库中保存数据,重定向到登录页面
            # 将业务处理放到另一个py文件中;
            # if 判断注册信息正确(request):
            if check_register_params(request):
                # 数据库中保存数据
                # UserInfo.objects.管理器方法
                UserInfo.objects.user_register_save(request)
                # 跳转登录页面
                return redirect(reverse(users:login))
            # 如果不合法,重定向到注册页面
            else:
                return redirect(reverse(users:register))
    3.校验用户输入信息的业务操作,在功能函数文件中书写
        def check_register_params(request):
            # 从获取表单输入数据
            # 用户名;密码1;密码2;邮箱
            user_name = request.POST[user_name].strip()
            user_pass1 = request.POST[user_pass1].strip()
            user_pass2 = request.POST[user_pass2].strip()
            user_mail = request.POST[user_mail].strip()
            # 定义一个默认合法的布尔值
            flag = True

            # 判断用户名长度
            # 为什么要用if not??????
            # 因为我们要返回错误信息,为了不用else来增加业务处理长度
            if not (5 <= len(user_name) <= 20):
                flag = False
                # 返回错误信息
                # 在判断过程中,存储错误信息到一个地方,
                # 在登录视图中取出错误信息,传递到模板中相应位置渲染显示;
                # django提供了一种messages()方法来存储消息;
                # 但是是一堆一堆的存,一堆一堆的取;所以我们要封装原生函数,将其输出修改成键值对;
                # 添加messages的时候中中间插入’:‘,取出的时候构造成一个字典;

            # 判断密码长度
            if not (8 <= len(user_pass1) <= 20):
                flag = False

            # 判断密码是否相同
            if user_pass1 != user_pass2:
                flag = False

            # 判断邮箱是否合法
            reg = ^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$
            if not re.match(reg, user_mail):
                flag = False

            # 判断用户名是否存在,已存在返回false
            # 需要在数据库中查找数据
            # UserInfo.objects.查找数据()
            # 在模型类中创建一个查找数据的方法,算了,直接写,
            # 竟然不行,特么的,get不到数据会产生异常
            if UserInfo.objects.user_by_name(user_name):
                flag = False

            return flag
    4.校验通过保存数据到数据库中
        # 管理器类中添加保存注册信息的方法
        # 创建一个保存注册信息的方法
        def user_register_save(self, request):
            # 将用户post请求信息赋值给数据库字段
            # 获取数据库对象
            # obj = ?????
            # obj = UserInfo() # 这么写会让这个方法变成针对一个表的方法;
            # self.model()是django自带的类方法,找到当前模型类;
            obj = self.model()
            obj.user_name = request.POST[user_name].strip()
            obj.user_pass = request.POST[user_pass1].strip()
            obj.user_mail = request.POST[user_mail].strip()
            obj.save()
    5.校验过程中出现不符合,就添加错误信息到messages这个消息框架中
        add_message(request, user_name, 用户名长度应该在5-20之间!)
        # 这里就涉及一个问题,原生的messages消息框架,是一堆堆的写入,一堆堆的读取,
        # 所以,我们需要封装这个框架的两个函数,在添加的时候在中间添加‘:‘,取出的时候以字典的方式操作;
        # 封装messages()这个原生
        # 在处理表单或者其他类型操作时给用户的一次性通知消息;
        # 原生的函数有两个方法:
        #   messages.add_message();
        #       第二个参数messages.INFO表示错误信息类型,
        #   messages.get_messages();
        #  添加信息
        def add_message(request, key, value):
            messages.add_message(request, messages.INFO, key + : + value)

        # 获得信息
        def get_messages(request):
            # 取出错误信息(字符串列表,每个字符串中间都有一个冒号)
            mess = messages.get_messages(request)
            # 保存错误信息到字典中
            info = dict()
            for message in mess:
                content = str(message).split(:)
                info[content[0]] = content[1]
    
    6.保存成功后跳转登录页面
    7.校验失败跳转注册页面
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 还有问题遗留,在离开鼠标焦点的时候怎么提示用户名是否存在?
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 上面的错误信息提示,没有正确时间显示?、
>>>>> 明天搞~~~
            
            

        

 

用户注册-01 | Django电商项目

标签:form表单   not   通知   直接   style   for   login   创建   用户   

原文地址:http://www.cnblogs.com/pymkl/p/7745495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!