01 | 请求和响应
request --> urls (请求使用urls来做的)(path)
response --> views (响应使用response来做的,HttpResponse,TemplateResponse)
02 | 路由分层
urls文件
其实这个路由就是
结尾一般用 “/” 结尾
父子路由
另外还可以定制父子路由,是一种顺接关系
父路由如下
include里面第一个参数说明这个url跳转到哪里,而first_app_urls是导入包
因此会跳转至
而这个子路由的访问地址
因为子路由是一个空字符串
如果想要传这种网址的话
可以使用下面的写法
说明就是这个num是int类型
那么这个127.0.0.1:2000/test/1/?v=2
这个2 是在哪里拿到呢?
其实是在request里的GET中的一个QueryDict中
那怎么拿呢?这样就可以了
03 | 静态文件
(只适用在前后端不分离的情况)
首先创建一个templates文件夹,存放前端的文件,也就是模板渲染文件(HTML,CSS,JS,等)
推荐在app中创建 ,因为这样就可以一个app一个模板文件,如果项目不要了,我们也不需要模板的渲染了,这样更可靠。
04 | 视图
(共有5种)
一般来说会先写增删改查中的查
ListView
其实ListView(TemplatesView)是继承了TemplatesView,所以 需要继承模板
用一个小项目来熟悉把~
要实现增删改查先实现models,也就是这个文件
在里面编写如下函数
现在进行解读
而这个choices
参数表明,在有限的元素中,用一个元组表示
元组的第一个值是内部存储的值,第二个参数是前台展示的值
后面再这个views文件中输入以下内容
在这个PersonList中,model
表示到哪一个model类中,template_name
表示渲染到哪一个模板文件
Model 与QuerySet
- 数据库就像是一个仓库,存储着货物
- Model像是仓库的设计图,或者理解成和数据库的一种映射关系
- instance像是实例,存储数据
- QuerySet就是一件一件包裹,包裹里面可能会有多个数据,一个数据,或者没有数据。就像是列表对象一样,可索引,切片,in方法
而数据库中的字段也就是这个models
类中会有以下字段
字符,整型,浮点型,日期类型,外键,一对一,多对多,还有一对多的,等等(具体看官网)
以下是一些补充:
还有
bulk_create()批量创建(比for循环使用creat效率要高)
orderby()等等
。。。。
存数据
新建一条数据,存到数据库中可以这么写
p是一个实例化对象
p.save()才是与数据库的交互
查数据
两种方法
filter()和get()这两个方法都可以
区别:
filter()就是可以过滤掉其他的,只获取正确的数据,可以返回空,一个或者多个,查出来的是一个QuerySet
get()建议和try使用,因为get不到的数据会报错,get到多条也会报错,查出来的是一个instance
更新
一条
单一的改
多条
另外可以使用updata方法,多条修改
删除
ps是之前过滤出来的一些QuerySet,这里对他们进行删除
DetailView
DetailView和ListView不同就是
Detail获取到某一条数据 而 ListView获取到一个表的内容或者是一个表的一部分内容