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组件,钩子函数的更多相关文章

  1. Django 测试脚本

    一.测试脚本 Django 在创建项目时自动在应用下创建了tests.py,这个py文件可以作为测试文件:也可以在应用下手动创建一个py测试文件. 无论哪种方式,都需要提前书写以下代码. from d ...

  2. 基于Ajax提交formdata数据、错误信息展示和局部钩子、全局钩子的校验。

    formdata重点: 实例化FormData这个类 循环serializeArray可以节省代码量 图片要用$('#id')[0].files[0]来获得 加上contentType:false和p ...

  3. django重写form表单中的局部钩子函数

    from django import forms from django.core.exceptions import ValidationError from jax import models c ...

  4. Django from表单及ajax提交文件

    参考: https://blog.csdn.net/baobao267/article/details/83038323

  5. DWZ框架中ajax提交文件表单的处理(关闭当前dialog + 刷新父级navTab)

    先重点关注两个js文件:dwz.ajax.js和dwz.core.js 流程: 1.回调iframeCallback <form xx enctype="multipart/form- ...

  6. 使用jquery的ajax提交文件上传

    以前的项目大多的使用jquery的插件来进行文件上传,对于就只引用jquery而不使用插件来上传文件之前未有写过,最近项目里有写到和用到,就记录一下,以后方便查找. 提示:存在浏览器皆容问题,谨慎使用 ...

  7. ajax提交文件file 单个文件上传

    转载: https://blog.csdn.net/u012867699/article/details/78357401

  8. 5) ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

    一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ​ # ...

  9. Ajax提交post请求返回404错误

    最近使用ajax提交表单的时候,发现无法执行success函数,后台的代码也正常执行了,但是就是无法执行success函数,执行error函数,返回的错误代码时404.显然是找不到请求的url. 可是 ...

随机推荐

  1. nginx中ngx_http_access_module模块

    实现基于IP的访问控制功能指令:4.1 allow允许访问指定的⽹网络或地址Syntax: allow address | CIDR | unix:| all;Default: —Context: h ...

  2. Shiro-Subject 分析(转)

    Subject反正就好像呈现的视图.所有Subject 都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager:可以把Subject认为是一个门面: ...

  3. sql server 复习笔记2

    主键约束 可以通过定义primary key 约束来定义主键, 用于强制表的实体化完整性,一个表只能有一个主键约束, 并且primary key 约束中的列不能为空值,由于primary key 约束 ...

  4. 系统信息的管理函数API

    1.Windows系统信息 1.1获取系统版本:   BOOL WINAPI GetVersionEx( __in_out LPOSVERSIONINFO lpVersionInfo ); lpVer ...

  5. 面向对象(OOP)笔记

    1.本质:以类的方式组织代码,以对象的方式组织(封装)数据 2.对象:是具体的事物 3.类:是对对象的抽象(抽象 抽出象的部分) 先有具体的对象,然后抽象各个对象之间象的部分,归纳出类 通过类再认识其 ...

  6. c++ demo code

    /* //多继承 #include <iostream> using namespace std; class Sofa { public: Sofa(); ~Sofa(); void s ...

  7. leveldb源码分析之内存池Arena

    转自:http://luodw.cc/2015/10/15/leveldb-04/ 这篇博客主要讲解下leveldb内存池,内存池很多地方都有用到,像linux内核也有个内存池.内存池的存在主要就是减 ...

  8. CF1214B

    CF1214B 解法: 暴力枚举,时间复杂度 $ O(n) $ CODE: #include<iostream> #include<cstdio> #include<cs ...

  9. 夺命连环问:一个 TCP 连接可以发多少个 HTTP 请求?

    曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什 ...

  10. elasticsearch java client

    1.集群名相同,且机器处于同一局域网同一网段,es会自动去发现其他的节点.2.集群不在同一局域网同一网段时,只需要在 elasticsearch.yml 中配置目标机器和端口即可discovery.z ...