38.django的路由系统

路由系统

​ 之前是将所有业务逻辑写在一个文件内,导致代码会越来越多, 越来越乱,违反了高内聚低耦合的原则,于是我们通过创建app来将视图层单独分开,单独创建相应的老师,学生,和班级的app。

创建app有两种:

a.使用pycharm创建django,加上appname
b.通过python manage.py startapp name

可以将业务逻辑写到app的views中,

并可以在主路由中将app中的views导入进行调用

路由的分组

路由的分组就是当有参数传入时利用正则对符合匹配的条件的进行分组匹配,分为无名分组和有名分组

1.无名分组

  • 按位置传参
  • () 表示分组,分组后,会把分组出来的数据当做位置参数,传递到视图函数

2.有名分组

  • 按关键字传参
  • 通过(?P<关键字>)分组后,会把分组出来的数据按关键字传参,传递到视图函数
  • 视图函数需要定义形参来接收,并且视图函数中形参的名字要跟分组的名字一样,与顺序无关

路由分发

但是会出现所有app中都会有views,同时调用会覆盖,所以在django中可以通过include来进行分发,在app中也需要分别创建urls.py指向views,然后在主路由中,将include函数放入url中,并在include函数中传入对应app的urls。这样也就是通过include进行路由分发。

反向路由解析

在django中,经常需要获取某条URL,为生成的内容配置URL链接。

django提供一种方法,在url中提供一个name参数,相当于是给url取了一个别名。在html模板中使用{% url 'name' %},不管url怎么变,html里找到的url就指向这里。

- FBV (function based views)
使用函数来处理业务逻辑
	
- CBV (class based views)
使用类来处理业务逻辑

Django除了使用函数作为视图,也可以使用类作为视图。我们可以写自己的类视图通过继承View,要想访问类视图,需要配置url,添加映射,而类视图不能像我们访问视图函数那样进行映射,需要使用as_view()方法才能进行映射。

在自己写的类视图中可以定义get和post方法,当请求过来的时候,会优先判断你的请求方法是GET还是POST, 如果是GET请求的话,走GET函数,反之走POST函数

这里除了
'get',:获取信息的
'post':提交数据用post方式
View还支持一些常用的方法:
'put', :更新数据 
'patch', :部分更新				
'delete':删除
posted @ 2019-08-14 12:23  yellowcloud  阅读(108)  评论(0编辑  收藏  举报
回顶部