一、注册相关的知识点
 
1、Form组件
 
我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放
 

 
 
2、局部钩子函数
 
 
  
   |   1  2  3  4  5  6  7   | 
     # 局部钩子函数  def clean_username(self):      username = self.cleaned_data.get("username")      valid = models.UserInfo.objects.filter(username=username).first()      if valid:          raise ValidationError("用户名已存在!")      return username   | 
  
 
 
  
 
3、全局钩子函数
 
 
  
   |   1  2  3  4  5  6   | 
     # 全局钩子函数:验证两次密码是否一致  def clean(self):      if self.cleaned_data.get("password") == self.cleaned_data("password_again"):          return self.cleaned_data      else:          raise ValidationError("两次密码不一致")   | 
  
 
 
  
 
4、 jQuery的属性操作相关的
 
 
  
   |   1  2  3  4  5  6  7  8  9  10  11   | 
     attr:          一个参数是获取属性的值,两个参数是设置属性值   removeAttr(属性名):          删除属性值   prop:      适应于属性的返回值是布尔类型的(单选,反选,取消的例子)   removePorp:      删除属性的值   | 
  
 
 
 
 
5、循环的两种方式
 
 
  
   |   1  2   | 
     $.each(数组/对象,function(i,v){})  $("div").each(function(i,v){})   | 
  
 
 
6、css中的三种隐藏:
 
 
  
   |   1  2  3  4  5  6  7  8   | 
     1、display:none    隐藏所有内容  2、visibility:hidden    隐藏内容  3、overflow:hidden    隐藏溢出内容   三者都是用来隐藏的  区别在于:      visibility:虽然隐藏了,但是被隐藏的内容依然占据这空间,这段隐藏了的内容却保留空间的位置会在网页中显示空白      display:隐藏了不占用空间   | 
  
 
 
 
 
7、提交二进制数据用FormData 
 
 
 
  
   |   1  2  3  4  5  6  7   | 
     var formData=new FormData();  formData.append("username",$("#id_username").val());  formData.append("email",$("#id_email").val());  formData.append("tel",$("#id_tel").val());  formData.append("password",$("#id_password").val());  formData.append("password_again",$("#id_password_again").val());  formData.append("avatar_img",$("#avatar")[0].files[0]);   | 
  
 
 
 
  加上:
 
 
  
   |   1  2   | 
     contentType:false  processData:false   | 
  
 
 
  
 
8、可以用下面的方法判断是什么请求