本节内容概述:html
表单提交的Method使用规则:get 获取数据 post提交数据mysql
单选使用get正则表达式
多选使用getlist sql
request.POST.getlist("favor")
文件上传须要再form表单增长属性
enctype="multipart/form-data"
读取文件须要注意以下步骤:
obj = request.FILES.get("fafafa")
filename = os.path.join('upload',obj.name)
f = open(filename, mode="wb")
for item in obj.chunks():
f.write(item)
f.close()
两种模式
至关于编程的两种模式:对象编程和过程编程两种模式数据库
模板语言循环字典编程
动态页面,使用?进行传参函数
注意模板中超连接跳转页面的代码中须要有斜杠:post
新的一种方式:/1.html,须要再urls.py中使用正则表达式ui
Django1.0url
path('detail-(\d+).html',views.detail),
相应的,views函数的形参也会追加一个,形参随便起名字
可是在Django2.0中,须要引入re_path
路由映射按照正则分组(从此推荐使用的):
匹配结果为
对于views函数,能够通用一种形参方式接受数据:
*args为单个变量组成的元祖,**kwargs对应字典
Django对应的路由名称
引用方式:
当前URL:request.path_info
也能够用另外一种形式实现URL的自定义生成:
在views里生成url
URL的分发:
Django默认使用sqlite做为默认数据库,若是想用mysql,则须要更改一下配置目录里的__init__文件:
数据库须要本身先建立
数据建立
用Navicat查看sqlite数据库
练习针对用户的增删改查,Url+Views+html
Django的Modles的字段类型:不少,基本类型主要有几类:时间、字符串、数字、二进制
修改表结构时,增长一列后,执行makemigration 时,系统会提示增长的方式,按提示写入默认值的需求
自增列,若是不写,后台会自动建立,手动生成,按以下语法规则,必须填入primary_key=True
字段的参数:
null 是否为空
default 默认值
primary_key 主键
db_column 列名
db_index 普通索引
unique 惟一索引
unique_for date 只对日期部分作索引
unique_for_month 同上
unique_for_year 同上
choices Django admin中显示下拉框,避免连表查询下降效率
auto_now 更新时,自动更新为当前时间
auto_now_add 建立时,自动建立为当前时间
blank 只是在Django admin中是否为空
varbose_name 在Django admin中显示的字段中文
editable 在Django admin中是否能够被编辑
error_messages 在Django admin中自定义错误提示信息
error_messages={‘required’:'请输入。。。'}
help_text 在Django admin中给予文本框的提示
validators 在Django admin中自定义字段正则的错误信息
建立外键:models.ForeignKey("tabelname",to_field="column_name",default=XXX)
外键在表中的列名会自动加上表名+“_id”
UserInfo.user_group是一个对象
UserInfo.user_group.id是一个对象的属性
UserInfo.user_group_id是一个列
建立数据时,能够不用对象方式赋值给UserInfo.user_group
而是用给列UserInfo.user_group_id赋值的方式来关联外键
这种外键嵌套能够多层嵌套
做业:=========================用户管理==========================
一、对于用户组的增删改查
二、对于用户的增删改查
添加必须作成模态对话框
删除也必须是模态对话框
修改,能够作跳转,下拉框的默认值应该是原数据,而不是初始第一个值
三、比较好看的页面
四、预习:Python进阶之路 modles模块的进阶部分,一对1、一对多、多对多
Django ORM操做中最牛逼的语法:
一、__双下划綫
二、_set