Django基础篇-url路由配置
urls.py 路由用法
- url 基本概念
- url 格式
- urls.py 的作用
- include
- kwarg
- name
① URL 概念:
URL 统一资源定位符,可以从互联网上得到的资源的位置和访问方法的一种简洁的方式,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
② URL 格式
http://127.0.0.1:8000/yuntuan/
URL 解释:
schema://host[:port#]/path/.../[?query-string][#anchor]
schema: 指定使用的协议(例如:http,https,ftp)
host: Http服务器的IP地址或者域名
port: 端口号,http默认是80端口
path: 访问资源的路径
query-string: 发送给http服务器的数据
anchor: 锚点
③ urls.py 的作用
URL 配置就像是 Dajngo 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。以这样的方式告诉 Django,对于哪个 URL 调用哪段代码。url 的加载就是从配置文件中开始。
url 解析过程
Django 会从 urlpatterns 里顺次读取元素,每个元素是方法 url 调用后返回的结果。
django 传给 url 路由要处理的地址,该地址是被去掉主机地址以及之后的一个"/"的剩余部分:
例如:http://127.0.0.1:8000/yuntuan/
经处理后的剩余部分就是:
yuntuan/
然后把该剩余部分与 url 方法的第一个参数进行正则匹配,如何匹配成功,则执行 url 的第二个参数指定的方法(该方法一般放在 views.py 中,主要功能的实现具体业务逻辑)
url 例子:
# blog/views.py
参数捕获:
1. 捕获位置参数(可变参数):在 url 函数中,第一个正则表达式使用()括号进行捕获参数。
2. 捕获关键字参数:在 url 函数中,第一个正则表达式使用(?P<keyword>)进行捕获。
注意事项:
参数类型是字符串类型,如果使用数字类型,需要使用 int 函数转换成 int 类型。
④include 的作用
方便项目管理:
一个 project 有一个总的 urls.py,各个 app 也可以建立 urls.py,不过都需要使用 include() 函数在 project 的 urls.py 文件进行注册。
主 url 文件
APP blog 里面的 url 文件
APP blog 里面的 view 文件
include注意事项:
到达 django 来的时候,已经有域名和反斜杠了,拿本机地址为例,已经有 http://127.0.0.1/ 这个样子了,所以主 url 中都不需要以 / 开头。
- 子 url 在配置的时候,其实就是字符串的匹配,一层套一层的。
- 主 url 匹配,开始的地方不需要加反斜杠。
原因是:因为 django 已经给域名后面加了一个正斜杠,所以不需要再加,否则将匹配不到正确的 url。
主 url 后面要加正斜杠;
app 的 url,前面不要加正斜杠;
主 url 后面不要加 $ 符号;
子 app 的 url,后面要加 $ 符号。
⑤ kwarg 的作用
传递一个 python 字典作为额外的参数给视图函数。django.conf.urls.url() 函数可以接收一个可选的第三参数,它是一个字典,表示想要传递给视图函数的额外关键字参数。
主 url 文件
APP blog 里面的 view 文件
URL 传递额外参数:
url 函数有一个参数叫做 kwargs,这个参数可以传递额外的参数到 views 中,并且必须为字典类型。在这使用 include 的时候,需要统一给下面的 url 一些参数的时候,显得尤其有用。
⑥ name 的作用
给一个匹配的 url 地址取名字
一般用于模板,也可以使用 reverse 进行页面重定向。
url 有一个 name 的参数,name 参数可以给这个 url 去一个合适的名字。通过给 url 取名字,以后在 view 或者模板中使用这个 url,就只需要通过这个名字就可以了。这样做的原因是防止 url 的规则更改,会导致其它地方用了这个 url 的地方都需要更改,但是如果取名字了,就不要做任何改动了。
⑦模板渲染方式
1.模板路径
2.渲染方式
settings.py 中模板路径配置:
- 直接将 html 字符串硬编码 HttpResponse 中
- django.template.loader 定义了函数用来加载模板
get_template
(template_name,using = None)
该函数使用给定的名称加载模板并返回一个 Template 对象 .get_template() 尝试获取每个模板直到有一个成功满足。
- 使用 render 进行渲染
- Appium+python自动化28-name定位
- Appium+python自动化29-toast消息
- guestfs这么强大你知道吗
- appium+python自动化30-list定位(find_elements)
- python笔记4-遍历文件夹目录os.walk()
- 【专知国庆特刊-PyTorch手把手深度学习教程系列01】一文带你入门优雅的PyTorch
- python接口自动化14-multipart/form-data上传图片
- 【干货】RL-GAN For NLP: 强化学习在生成对抗网络文本生成中扮演的角色
- python接口自动化15-multipart/form-data表单提交
- appium+python自动化32-android_uiautomator定位进阶版
- appium+python自动化33-解锁九宫格(TouchAction)
- 用qemu中最少的代码实现一个kvm模拟器
- 关关的刷题日记07——Leetcode 26. Remove Duplicates from Sorted Array 方法1
- openstack如何扩展API之一:新添加API
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python|一文详解数据预处理
- 安排上了!PC人脸识别登录,出乎意料的简单
- valgrind使用介绍
- 实用!一键生成数据库文档,堪称数据库界的Swagger
- 算法集锦(2)|scikit-learn| 如何利用文本挖掘推荐Ted演讲
- 算法集锦(3)|采用医疗数据预测糖尿病的算法
- 谁说Cat不能做链路跟踪的,给我站出来
- Libra:一种Python工具,可以用几行代码自动实现机器学习过程
- 国内首个“新基建”安全大赛启动了!
- Kubernetes 中 Informer 的使用
- 嵌入式开发中常见3个的C语言技巧
- 恕我直言,我也是才知道ElasticSearch条件更新是这么玩的
- 有了MinIO,你还会用FastDFS么?
- STP 实验
- 算法集锦(6) |基于GPU框架的tensorflow数据增强算法