第四十七章:forn组件

it2025-11-01  2

Ajax发送json格式数据   $.ajax({             url:'',  // 不写默认朝当前页面所在的url地址提交             type:'post',             contentType:'application/json',             data:JSON.stringify({'name':'jason','csrfmiddlewaretoken':'{{ csrf_token }}'}),             success:function (data) {                 alert(data)             }         })   Ajax发送文件  $('#d1').click(function () {         // 如果用ajax发送文件 需要使用内置对象FormData         var formData = new FormData();  // 生成一个内置对象         // 内置对象formdata既可以传普通的键值对,也可以传文件         formData.append('name','jason');  // 普通键值对         formData.append('password','123');         // 传文件         var fileObj = $('#d2')[0].files[0];  // 先获取标签对象 转成原生js对象 通过内置的files方法拿到列表 然后去索引0拿到文件对象         formData.append('myfile',fileObj);         $.ajax({             url:'',  // 不写默认朝当前页面所在的url地址提交             type:'post',             // 注意ajax在发送文件的时候 需要你手动指定两个特殊的参数                     contentType:false,  // 不要用任何编码 使用我formdata自带的编码即可             processData:false,  // 浏览器不要处理我的数据 是什么就什么                 data:formData,             success:function (data) {                 alert(data)             }         })     })             注册示例  获取用户输入 后端判断用户输入的内容是否合法  如果不合法前端渲染对应的错误信息   forms组件  1.前端渲染展示页面 获取用户输入      >>> 渲染页面  2.将数据发送给后端进行数据的合法性校验  >>> 数据校验  3.将不合法的提示信息展示给用户看    >>> 展示提示信息  关于数据的校验   1.前端   2.后端   数据的校验前端可以没有,但是后端一定要做!!!           forms组件能够帮你完成上面的三个过程   1.校验数据    forms组件的校验数据的使用    1.定义一个继承forms.Form一个类     from django import forms     class MyForm(forms.Form):      username = forms.CharField(max_length=6)  # username最长只能是6位      password = forms.CharField(max_length=8,min_length=3)  # password最长8位 最短3位      email = forms.EmailField()  # email接受的数据必须符合邮箱格式    2.给forms组件传参数 (字典的显示)     obj = views.MyForm({'username':'egondsb','password':'12','email':'123@qq.com'})    3.查看数据是否完全合法     obj.is_valid()    4.查看所有校验通过的数据     obj.cleaned_data     {'email': '123@qq.com'}    5.查看所有没有通过的数据     obj.errors     """     {      'username': ['Ensure this value has at most 6 characters (it has 7).'],      'password': ['Ensure this value has at least 3 characters (it has 2).']}     """   2.渲染标签    forms组件只能帮你渲染 获取用户输入(输入框 选择框 下拉框...)的标签    提交按钮也得自己写        form表单取消前端校验功能     <form action="" method="post" novalidate>        forms组件当前端输入的信息不合法的时候 页面上的数据保留不会刷新  这样方便用户修改       3.展示提示信息    {% for foo in form_obj %}             <p>                 {{ foo.label }}{{ foo }}                 <span>{{ foo.errors.0 }}</span>             </p>    {% endfor %}              forms组件的钩子函数   局部钩子   全局钩子   # 局部钩子   def clean_username(self):    # 用户名中不能有666    username = self.cleaned_data.get('username')    if '666' in username:     self.add_error('username','光喊666是不行的')    return username      # 全局钩子   def clean(self):    # 获取密码和确认密码比对    password = self.cleaned_data.get('password')    confirm_password = self.cleaned_data.get('confirm_password')    if not password == confirm_password:     self.add_error('confirm_password','两次密码不一致')    return self.cleaned_data                     django中测试脚本书写  import os  import sys  if __name__ == "__main__":   os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day66.settings")   import django   django.setup()       from app01 import models   print(models.Userinfo.objects.all())  

转载于:https://www.cnblogs.com/haojunliancheng/p/11225896.html

最新回复(0)