前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django基础篇-url路由配置

Django基础篇-url路由配置

作者头像
小团子
发布2019-07-18 11:05:19
1.8K0
发布2019-07-18 11:05:19
举报
文章被收录于专栏:数据云团数据云团

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_templatetemplate_nameusing = None

该函数使用给定的名称加载模板并返回一个 Template 对象 .get_template() 尝试获取每个模板直到有一个成功满足。

  • 使用 render 进行渲染
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档