网站子目录设计,一级域名如何分发二级域名,网页设计图片轮播,wordpress 主题太大了一.前言
前面我们说了django的安装于基础配置#xff0c;基础知识点我就细分下来#xff0c;每天和大家讲一点#xff0c;今天就要和大家说django的基础知识点了#xff0c;我们今天先来讲路由#xff0c;内容不多#xff0c;希望大家记住
二.传统路由 路由就是前面一个…一.前言
前面我们说了django的安装于基础配置基础知识点我就细分下来每天和大家讲一点今天就要和大家说django的基础知识点了我们今天先来讲路由内容不多希望大家记住
二.传统路由 路由就是前面一个路径后面写上一个函数对应而传统路由有两种写法一种是直接给他写死第二种动态的就是中间加上类型:参数名这种在对应的视图函数里面参数也要加上这个名字这样我们就可以获取这个动态的参数可以看到视图函数第一个参数是request这个参数必须得有名字习惯叫做这个这个就是所有的请求信息如果我们要拿到这个get请求后面的载荷就可以通过request.GET取到
如果我们访问127.0.0.1:8000/home/?page1
例如这个我们就可以拿到这个page的值如果没有结果就是None 常见的类型 int整数 str字符串 / slug字母数字下滑线- uuiduuid格式 path路径可以包含 / 三.正则表达式路由 在django1版本用的多。 在django2版本用的少
大家肯定能想到为什么为什么用的少了这是因为django2以后支持int:nid传递参数但是我们还是得要了解正则的 我们正则路由要用re_path这里面我们就直接写正则的符号我们写了多少个符号对应的就要在视图函数里面加上多少个参数request参数除外当然如果我们想指定名字可以在正则里面写上?P参数名字正则内容这样我们参数里面就要写上同名的参数
四.路由分发
我们可以想一下如果我们有200个api每个api前面路由都有相同的部分我们这么分发就会很乱后期也特别不好维护那我们就可以使用路由分发
4.1 include分发
我们可以先在对应的app里面创建一个urls.py的文件 我们在主路由里面写上user然后include里面写上分路由的文件路径分路由再写上后面的后面的路径加上对应的函数这样就可以实现分发了我们访问http://127.0.0.1:8000/user/show/就可以访问到对应的用户展示页面了
我们通常用include分发和app进行分块
4.2 手动分发 path(user/, ([ path(add/, views.login), path(delete/, views.login), # /user/delete/ path(edit/, views.login), path(show/, views.login), ], None, None)), 我们也可以这样进行手动分发纯粹为了提取功能的url后面的两个none我们读include源码就知道了分别代表app_name和namespace我们目前还用不上一会用上了会说的
路由分发的本质
URL对应函数 path(user/add/, views.login), URL对应元组 path(user/add/, (元素,appname元素,namespance元素) ), 实例 path(user/add/, include(apps.api.urls) ), path(user/add/, ([],None,None) ), 五.name
name就是给一个路由起个名字 根据名字反向生成URL。 我们后续一般会通过这个name来获得获取用户url来做重定向或者用户权限之类的
六.namespace 我们前面也提到了namespace这个就是用来辅助name的这个在include中才用得到给大家举个例子就知道了假如我们有很多个app难免会遇到重名的name那如果我们在include里面设置不同的namespace是不是就能通过这个namespace进行区分了 我们可以通过nanespace:name找到对应的具体的url但是这里需要注意的是当我们设置了namespace就必须得设置appname 如果我们手动分发这两个就不能是None了第三个是namespace第二个是app_name通常让这两个同名 七.总结
我们今天说了路由发现还是很简单的主要是记忆讲了路由的分发啥啥啥的非常简单
八.补充
今天我要在这里补充一个知识点就是为啥我们习惯在路由末尾都加上一个/要是用了其他框架大家肯定都没这个习惯但是django我们要在这里加上/这是为什么呢
这是因为django的配置里面默认APPEND_SLASH True
如果我们在路由后面加上/但是浏览器里面我们没有加上/由于这个配置的存在我们就会重定向到由/的这个url这个配置我们也可以去更改但是这么方便我们肯定是不会去更改的如果我们路由里面不加上这个/那么只有当浏览器里面不带/才会有用相当于这个配置没有用所以我们都习惯加上这个/
我们下一期将和大家讲django中的视图希望大家的点赞关注加收藏