django路由系统,FBV,CBV,ORM操作
2018-03-01 21:13
741 查看
一.路由系统 1. Django请求生命周期 url里的路径对应views里的视图函数,视图函数对应templates里的html文件, 当用户请求时通过路径调用相对应的视图函数, 视图函数返回给用户一个字符串 请求生命周期就是请求先到达url对应关系(匹配) --> 然后到达views的视图函数 --> 返回给用户字符串(或者打开一个HTML文件,读取内容,将内容返回给用户) 2. 创建项目 在命令窗口创建django projcet --> django-admin startproject 项目名 创建 app应用 先cd到存放的文件夹--> python manage.py startapp cmd 创建后会发现 mysite(项目) - mysite(配置文件) -- wsgi.py --> 网关接口 -- urls.py --> 全局的URL配置,路由配置文件 -- settings.py --> 项目的相关配置 - cmdb(app应用) -- views.py --> 视图函数 -- admin.py --> 用户交互 -- models.py --> 用于创建数据库表 templates 文件夹用来存放.html文件 manage.py 是应用的命令行接口 3. 配置 - 模版路径 - 静态文件路径 - 需要在setting.py里面设置 - 设置CSRF 在form表单里写入{% csrf_token %} 4. 编写程序 - urls.py -- form cmdb import views --> 先导入app里的views -- path('func/', views.func), --> 设置url路径 - views.py -- def func(request) -->设置视图函数(为了处理客户请求) --> request (包含了用户所有的请求数据) - return HttpResponse('字符串') --> 返回的是一个字符串 - return render(request,'index.html',{}) --> 渲染器,返回的是一个页面,{}里面可以传值 - return redirect(reverse('URL路径') --> 就是一个路径跳转,返回的一个路径 二.视图[/b] 1.form表单提交有GET,POST,PUT,DELETE,GEAD,OPTION等等方式 GET:获取数据 POST:提交数据 2.在views.py获取方式 通过 request.method #获取提交方式 通过 request.POST.get() 获取数据 通过 request.POST.getlist() 获取列表数据 通过 request.FILES.get() 获取文件 3.上传文件
-在html里面传入文件要在form表头内写入: enctype="multipart/form-data" # 文件的传输配置 - <input type="file" name='fafa'> --> 在HTML里面上传文件 - fafa = request.FILES.get('fa') --> 在views.py通过这个方法获取文件,但是它保存在了files里面--> 通过查看它的类型发现它是一个类,导入这个类,迭代类的方法 .chunks() ,这个方法里面存放了上传的文件内容
--> 我们可以通过os写入一个文件里面
--> 先导入os模块
f = open(fa,mode="wb") # 创建并修改这个文件
for i in fafa.chunks(): # 将上传的内容通过迭代
f.write(i) # 写入f文件
f.close() # 关闭文件
--> 这时会在项目中发现一个一个文件,这个文件就是获取的文件
4.FBV(function base view) & CBV 1.FBV 在url.py index -> 对应的一个函数名 在views.py def 函数(request)
上面这俩张图就是一个简单的FBV
=============
2.CBV
/index/ -> 对应函数名 /index/ -> 对应类,会执行这个类里面指定的方法 方法和FBV一样,但是在views.py里面创建的是一个类, 并导入from django.views import View 继承View urls.py要写 path('index',类.as_view()), 其余与FBV一样 包括提交获取 原理是 通过View父类的dispatch方法 反射(相当于有一个dispatch函数,在这个函数里面封装了一些方法) # 建议:俩者都用
上面这俩张图就是一个简单的CBV,提交的时候通过父类的dispatch会判断并调用get.post方法
三.模版 - 模版语言 里面可以有for循环,当我们的渲染器render返回的是
比如:
-- return render(request,'index.html',{'list':[1,2,3,4,5]})
-- {% for i in {{list}} %} --> 像这样用双花括号括起来的标签称为变量标签,里面用于显示对象的内容
--> 里面含有%的称为块标签,用于向HTML模版中插入循环或判断这样的逻辑
<p> i <p/> # 这样就将list里的内容遍历的出来
-- {% endfor %}
# 注意: 必须说明结束 通过索引取 -- {{list.0}} --> 在django里面索引是用点: .0 .1 .2
四.ORM操作 原生的sql语句和ORM方法的对应关系
select* from tb where id>1 ==> models.tb.objects.filter(id__gt=1)
id__gt=1 --> id>1
id__lt=1 --> id<1
创建类:
1. 根据类自动创建数据库表
models.py 在里面写类 需要继承models.Model
字符串类型CharField
数字
时间 DateTimeField
二进制
自增(primary_key=True) 必须加
常用的字段参数:
null -> 是否为空
default ->默认值
primary_key ->主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->对时间的索引
unique_for_month ->对月份的索引
unique_for_year ->对年份的索引
auto_now ->创建时候,自动生成时间
注意: objects.filter().first().update()
auto_now_add ->更新时候,自动更新称当前时间
choices -> 在django admin中显示下拉框,避免连表查询
blank -> 在django admin中是否为空
verbose_name -> 在django admin中列名中文
editable -> 在django admin中是否被编辑
error_messages -> 在django admin中显示错误信息
help_text -> 在django admin中显示帮助信息,提示
validators -> 在django form自定义验证机制
外表:
models.ForeignKey('关联表名,类名','关联字段')
创建了以后数据库有一个加_id的字段(里面封装了对象) 有一个字段
创建Django用户: createsuperuser
执行makemigrations appname创建脚本,里面含有生成数据库表的数据
执行migrate appname 生成数据库表
2. 根据类对数据库表中的数据进行各种操作,根据创建的表进行数据库操作
3. models.类.objects 可以对数据库进行操作
增: models.类.objects.create() 增加
另一种方式: a = models.类()
a.save()
查: models.类.objects.all() 把表里的所有东西都获取
返回的是一个QuerySet类型,列表 --> 可以通过循环获取处理
models.类.objects.filter(条件) 过滤,也就是查询
返回的也是一个QuerySet类型,列表 --> 通过循环获取
models.类.objects.filter(条件).first() --> 获取的第一个符合条件的数据
models.类.objects.filter(条件).count() --> 获取个数
删: models.类.objects.all().delete() 删除整个表
models.类.objects.filter(条件).delete() 查询到然后删除固定数据
改: models.类.objects.all().update(内容) 修改全部
models.类.objects.filter(条件).update(内容) 修改指定
4. 一对多操作
a.外键
b.外键字段_id
c.根据外键_id创建数据
d.循环操作
作业:用户管理:
1.俩张表 foreignKey 关系
2.用户组增删改查
3.用户的增删改查
- 添加必须是模态对话框
- 删除也必须是模态对话框
- 编辑 有默认提示,必须显示默认值
4.页面好看
5.预习 http://www.cnblogs.com/wupeiqi/articles/4938499.html
相关文章推荐
- Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
- Django之路由、模板和模型系统
- Django学习系列之路由系统
- Django的CBV和FBV
- Django之路由系统
- django路由系统之有名参数
- Django-路由系统
- Django 之 CBV & FBV
- Python/Django(CBV/FBV/ORM操作)
- django框架--路由系统
- 自动化运维Python系列之Django路由系统、Ajax请求
- Django之路由分配系统
- Django之FBV和CBV
- django上课笔记1-目录介绍-路由系统-ORM操作
- django学习 笔记---给cookie添加装饰器(FBV和CBV模式)
- Django-Rest frameworw之路由系统
- django的路由系统
- Django框架学习笔记(6.FBV和CBV简单介绍)
- django-路由系统
- Django的CBV和FBV