Django之抉择(路由)

一.路由匹配

第一个参数是正则,访问testadd时匹配到了testadd中test字符串,所以不会继续向下匹配,直接走test这条路由,加个斜杠/可以解决这个问题,但是/后边继续添加字符也同样可以匹配到,所以在/后加$来确定结尾完成绝对匹配。

首页设置:

直接匹配空进入首页。

匹配404页面,未设置的路由:

加了此路由后,当请求没有最后的斜杠时,浏览器不会重定向到二次加/的请求,而是直接被最后的空路由进行处理。

二.分组

无名分组

将正则匹配分组得到的数据当做位置参数传参给路由函数

有名分组

将其作为关键字传参

有名分组和无名分组不能直接混着用

因为路由中如果你匹配了关键字参数分组,那么路由不会再传任何位置参数,可以用*args,**kwargs去验证,访问/test/80/70

三.反向解析

动态反向获取路由,根据name这个自己设置的别名去反向查找路由

给路由起一个别名:用name参数

模板中可以用{% url 'index' %}动态加载

reverse('index',args=(10,)),可以向路由拼接数字

有名分组时二者都可以使用

注意元组的逗号

四.路由分发

在每个app下都有自己的urls.py文件,项目总url只负责分发给各个app即可,app需要注册在setting文件中。

导入多个app时注意起别名,不然都是urls

如果是在app的url文件中定义的name,那么反向解析时,需要格式‘app_name:url_name’,总路由也要加入命名空间,

模板中用法:

{% url 'app:index' %}

导包模式

原理:

五.伪静态网页

把路由匹配加个.html就可以了

 

url('^index.html/',views.view)

 

六.虚拟环境

每个项目对应一个环境,只有自己需要的包

是一个venv文件夹,相当于重新创建了一个python解释器

七.Django1.0和2.0的区别

1.0的路由是url,2.0是path,不支持正则,可以用re_path代替。

2.0提供了五个默认的转换器:

自定义转换器:

八.CBV

无论是CBV还是FBV,都是路由对函数

基于类的视图处理,类.as_view()

来分析源码

实际上就是在路由中设置了view.view

 

根据method不同,来确认执行具体方法对应函数,同名

九.返回json数据

设置ensure_ascii为false,使中文原样输出,不被转码

十.上传文件

用request.file来获取传来的文件

 

记得设置enctype,不然没有数据

大文件:

 补充;

<li><a href="?page=1">1</a></li>  # 自动补全当前路径

  

转载于:https://www.cnblogs.com/xufengfan/p/10998461.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值