ajax提交文件,django测试脚本环境书写,froms组件,钩子函数
1.在新版本中,添加app是直接在settings设置中,将INSTALLED_APPS里添加app名字,
但是他的完整写法是 'app01.apps.App01Config' 因为新版本做了优化,所以直接写app名字也支持
2.form标签传输文件
form表单默认的编码格式是urlencoded不支持发文件(只能把文件名发过去)
它所对应数据格式 username=jason&password=123
1.指定form提交的编码格式。 在form标签内添加 enctype="multipart/form-data" 才能实现使用form标签传输文件的操作
2.在input标签中将type设为 file 会出现选择文件栏
使用post请求提交给后台后,后台使用request.FILES.get()来获取文件,会获取文件对象,对象可以使用 . name 方法来获取文件名
3. ajax提交文件
在bootstrap 中的boot jQuery中导入jQuery。放置在<head>中
1. input标签type设为file 。会出现选择文件栏
2.设置一个button按钮
2. 使用ajax设置点击事件,然后使用FormData()生成一个内置对象
此对象既可以传普通的数据(键值对的数据)也可以传输文件
普通数据:
使用变量forData.append('name' , 'owen'); 添加普通数据
传文件:
1.先获取文件对象 $('#d2‘)[0].files[0], 先获取标签对象,取索引转成原生js对象,,再使用内置方法files获得文件对象
2.再使用formData.append('myfile' , 文件对象) 键值对的方式添加到formData中,
再将formData通过ajax发送给后台,后台使用request.FILES.get()获取文件,使用request.POST.get()来获取普通数据
forms组件:
关于django中测试脚本书写
新建一个py文件,将manage.py中的以下代码复制到py文件中
import os
import sys if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djtest.settings")
再添加如下代码
imput django
django.setup()
再导入 app中的modles
from app01 imput modelsz
还有一种方法是再pycharm解释器下方有一个python Console,该环境下帮你做好了以上的操作



forms组件中所有字段默认都是必填的, 参数少传会给必须有 该位置必须要传参数的提示
在数据都满足form组件校验规则下,参数多传,或者传入没有的字段会过滤掉不接收
补充:
render 中的 locals() ,会将所在的名称空间所有的名字都传递给模板页面
forms组件渲染标签:
forms组件只能帮你渲染 获取用户输入(输入框,选择框,下拉框。。)的标签
forms组件取消前端校验功能 在form标签中添加 novalidata
forms组件后台校验数据
直接使用
form_obj = MyForm() # 实例化字段的类
if request.method == 'POST': # 判断他是否是post请求
form_obj = MyForm(request.POST) # 直接将类传入request.POST字典,因为request.post本身就是一个字典,而forms组件所需要的参数就是字典。所以直接将前台传过来的数据传进去判断。得到的结果与is_valid()一样,得到的是bool值,直接进行判断
form组件当前端输入的信息不合法的时候,页面上的数据保留不会刷新,这样方便用户修改
forms组件的常用参数:
username= forms.CharField(max_length=6, label='用户名', error_messages={'max_length' : ‘用户名最长6位置’,
'required' : '用户名不能为空' })
1. max_length : 设置最大长度
2. label='用户名’ :自定义字段名,因为默认的是创建的字段名,是英文,可以自定义为中文
3. initial='请输入用户名' : 设置input框中的默认值
4. # 普通字段错误信息设置 error_messages={ ‘max_length’ : '用户名最大只能是6位,‘required’ : ‘用户名不能为空’ } :错误信息 参数是一个字典. key必须写对。value可以随便设置
5. # 邮箱字段错误信息设置 error_messages={‘invalid’ : '邮箱格式不正确' , 'required' : '邮箱不能为空'} : 错误信息
6. widget=widgets.PasswordInput( attrs={‘class’ : 'form-control'}) : 设置密码为密文
forms字段校验的两种方式
1. RegexValidator验证器
2.钩子函数
钩子函数是写在字段类下面的函数,用来校验客户端传过来的信息
1.局部钩子。针对字段名来做校验的函数 (函数命名开头都是clean)
比如 def clean_username(self): 加判断
username = clenaed_data.get('username')
ajax提交文件,django测试脚本环境书写,froms组件,钩子函数的更多相关文章
- Django 测试脚本
一.测试脚本 Django 在创建项目时自动在应用下创建了tests.py,这个py文件可以作为测试文件:也可以在应用下手动创建一个py测试文件. 无论哪种方式,都需要提前书写以下代码. from d ...
- 基于Ajax提交formdata数据、错误信息展示和局部钩子、全局钩子的校验。
formdata重点: 实例化FormData这个类 循环serializeArray可以节省代码量 图片要用$('#id')[0].files[0]来获得 加上contentType:false和p ...
- django重写form表单中的局部钩子函数
from django import forms from django.core.exceptions import ValidationError from jax import models c ...
- Django from表单及ajax提交文件
参考: https://blog.csdn.net/baobao267/article/details/83038323
- DWZ框架中ajax提交文件表单的处理(关闭当前dialog + 刷新父级navTab)
先重点关注两个js文件:dwz.ajax.js和dwz.core.js 流程: 1.回调iframeCallback <form xx enctype="multipart/form- ...
- 使用jquery的ajax提交文件上传
以前的项目大多的使用jquery的插件来进行文件上传,对于就只引用jquery而不使用插件来上传文件之前未有写过,最近项目里有写到和用到,就记录一下,以后方便查找. 提示:存在浏览器皆容问题,谨慎使用 ...
- ajax提交文件file 单个文件上传
转载: https://blog.csdn.net/u012867699/article/details/78357401
- 5) ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response
一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] # ...
- Ajax提交post请求返回404错误
最近使用ajax提交表单的时候,发现无法执行success函数,后台的代码也正常执行了,但是就是无法执行success函数,执行error函数,返回的错误代码时404.显然是找不到请求的url. 可是 ...
随机推荐
- Java集合--Iterator和Enumeration比较
转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311275 第1部分 Iterator和Enumer ...
- 2019HDU多校Minimal Power of Prime——分段讨论&&思维
题目 将 $n$($1 < n \leq 10^{18}$)质因数分解,求质因数幂的最小值. 分析 直接质因数分解,不太行. 可以这样想,对小区间质因数分解,n变小了,再枚举答案. 打印1-10 ...
- 第四章 深入C#的string类
一.String 类的常用方法 1.indexOf(); 获取指定字符串的位置,如果没有则返回-1 2.SubString(); 截取字符串,参数1代表开始位置,参数2代表截取长度 3.ToLo ...
- 边学边体验django--表格
在模板的末尾,我们增加一个rlt记号,为表格处理结果预留位置. 表格后面还有一个{% csrf_token %}的标签.csrf全称是Cross Site Request Forgery.这是Djan ...
- ue/um-editor实现word图片复制
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...
- [Luogu] 校园网Network of Schools
https://www.luogu.org/problemnew/show/2746 Tarjan 缩点 判断入度为0的点的个数与出度为0的点的个数的关系 注意全缩为一个点的情况 #include & ...
- 一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483
思想启发来自, 罗博士的根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解.主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F ...
- MONGODB 数据库回复备份
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...
- codeforces#1217D. Coloring Edges(图上染色)
题目链接: https://codeforces.com/contest/1217/problem/D 题意: 给图染上$k$种颜色,相同颜色不能形成一个环 数据范围: $1\leq n \leq 5 ...
- React前端开发环境搭建
先,我们需要明确的是React和很多前端框架一样,底层都还是js以及html,即便它有着看似特殊的jsx语法. 我们要在服务端运行js,就需要依赖一个环境,和运行war包需要tomcat一类中间件一样 ...