标签: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.校验失败跳转注册页面 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 还有问题遗留,在离开鼠标焦点的时候怎么提示用户名是否存在? >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 上面的错误信息提示,没有正确时间显示?、 >>>>> 明天搞~~~
标签:form表单 not 通知 直接 style for login 创建 用户
原文地址:http://www.cnblogs.com/pymkl/p/7745495.html