Python3.5 学习十九 Django分模块讲解 MTV+URL

时间:2023-12-25 09:26:19

本节内容概述:

Python3.5 学习十九  Django分模块讲解 MTV+URL

表单提交的Method使用规则:get 获取数据  post提交数据

单选使用get

多选使用getlist  

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() 两种模式  

Python3.5 学习十九  Django分模块讲解 MTV+URL

相当于编程的两种模式:对象编程和过程编程两种模式

Python3.5 学习十九  Django分模块讲解 MTV+URL

Python3.5 学习十九  Django分模块讲解 MTV+URL

模板语言循环字典

Python3.5 学习十九  Django分模块讲解 MTV+URL

动态页面,使用?进行传参

注意模板中超链接跳转页面的代码中需要有斜杠:

Python3.5 学习十九  Django分模块讲解 MTV+URL

新的一种方式:/1.html,需要再urls.py中使用正则表达式

Django1.0

path('detail-(\d+).html',views.detail),
相应的,views函数的形参也会追加一个,形参随便起名字 但是在Django2.0中,需要引入re_path

Python3.5 学习十九  Django分模块讲解 MTV+URL

路由映射按照正则分组(今后推荐使用的):

Python3.5 学习十九  Django分模块讲解 MTV+URL

Python3.5 学习十九  Django分模块讲解 MTV+URL

匹配结果为Python3.5 学习十九  Django分模块讲解 MTV+URL

对于views函数,可以通用一种形参方式接受数据:

Python3.5 学习十九  Django分模块讲解 MTV+URL

*args为单个变量组成的元祖,**kwargs对应字典

Django对应的路由名称

Python3.5 学习十九  Django分模块讲解 MTV+URL

引用方式:

Python3.5 学习十九  Django分模块讲解 MTV+URL

Python3.5 学习十九  Django分模块讲解 MTV+URL

    当前URL:request.path_info

  也可以用另一种形式实现URL的自定义生成:

  在views里生成url

Python3.5 学习十九  Django分模块讲解 MTV+URL

URL的分发:

Python3.5 学习十九  Django分模块讲解 MTV+URL

Django默认使用sqlite作为默认数据库,如果想用mysql,则需要更改一下配置目录里的__init__文件:

数据库需要自己先创建

Python3.5 学习十九  Django分模块讲解 MTV+URL

数据创建

Python3.5 学习十九  Django分模块讲解 MTV+URL

用Navicat查看sqlite数据库

练习针对用户的增删改查,Url+Views+html

Django的Modles的字段类型:很多,基本类型主要有几类:时间、字符串、数字、二进制

修改表结构时,增加一列后,执行makemigration 时,系统会提示增加的方式,按提示写入默认值的需求

自增列,如果不写,后台会自动创建,手动生成,按如下语法规则,必须填入primary_key=True

Python3.5 学习十九  Django分模块讲解 MTV+URL

字段的参数:

null  是否为空

default  默认值

primary_key  主键

db_column  列名

db_index  普通索引

unique  唯一索引

unique_for date  只对日期部分做索引

unique_for_month  同上

unique_for_year  同上

choices  Django admin中显示下拉框,避免连表查询降低效率

Python3.5 学习十九  Django分模块讲解 MTV+URL

auto_now     更新时,自动更新为当前时间

auto_now_add  创建时,自动创建为当前时间

Python3.5 学习十九  Django分模块讲解 MTV+URL

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赋值的方式来关联外键

这种外键嵌套可以多层嵌套

Python3.5 学习十九  Django分模块讲解 MTV+URL

作业:=========================用户管理==========================

1、对于用户组的增删改查

2、对于用户的增删改查

  添加必须做成模态对话框

  删除也必须是模态对话框

  修改,可以做跳转,下拉框的默认值应该是原数据,而不是初始第一个值

3、比较好看的页面

4、预习:Python进阶之路 modles模块的进阶部分,一对一、一对多、多对多

Django ORM操作中最牛逼的语法:

1、__双下划綫

2、_set