Django2.0——路由配置
URL配置就像是Django所支撑网站的目录,它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。URL需要在urls.py进行配置,与其对应的视图函数写在views.py文件中。url的配置写在urlpatterns列表的path方法中,对于path的功能,下面一一讲解。
path
- path方法第一个参数是url路由的配置,还可以通过<xx>/将输入指定url后多余的部分当作参数传给视图函数,视图函数同样要用一个参数xx来接收它。这里默认包含了一个转化器类型,是path转化器,将匹配任何字符串,当然也包括了
/字符。也可自己指定格式如<int:xx>/,这是指定了一个整形转化器,即只匹配整形作为参数。
转化器的类型如下:
- str,匹配除了路径分隔符(
/)之外的非空字符串,这是默认的形式。 - int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符
下面一个小例子,通过改写urls和views文件,配置一个hello路径,当输入这个路径,将调用对应的视图函数index。



这里在前面的例子下补充一个int转化器,捕获整形数据。


- path的第二个参数一般是调用视图函数,当然还可能是利用include方法将不同app应用下的子路由在主路由中进行注册。include方法的参数是‘app_name.urls’。这里我们在项目下创建一个app名为music,并用include为子路由注册在主路由中,接着便能在app的urls文件和views文件中操作上述的方法。

在music应用下中分配子路由,并调用改app下的视图函数。



- path的第三个可选参数是一个字典格式的参数,用于传递给视图函数,视图函数用关键字kwargs来接收。
当这个字典参数加到子路由注册中去,则这个字典对于其下的所有子路由都有效。


- path第四个可选参数的关键字是name,name的作用是给url起了一个别名,然后可以在视图函数中利用reverse方法将url解析出来。name 常用在 templates, models, views ……中,也可起到页面重定向的功能。页面重定向的方法是redirect。
下面举个小例子,分别新建两个路由及其对应的两个视图函数,一个模拟旧网页,一个模拟新网页,现在要做的是输入旧网址时,能给我打开新的网页,这就是页面重定向。




给新网页的url分配一个name


re_path
如果上述的path方法中的转化器无法满足你的需求,可以考虑用万能的正则表达式,不过就不是用path方法了,而是re_path,在django2.0之前的版本,还没有自带的转化器,所以之前都是用正则来筛选捕获url中的参数的。
在Python正则表达式中,命名式分组语法为 (?P<name>pattern) ,其中name为名称, pattern为待匹配的模式。下面有个小例子,用大家熟悉的.*?来匹配除换行符外的任意字符。



Django2.0——路由配置的更多相关文章
- Django2.0路由层-URLconf
目录 DJango2.0路由层-URLconf 概述 urlpatterns 实例 path转换器 自定义path转换器 使用正则表达式 命名组(有名分组) URLconf匹配请求URL中的哪些部分 ...
- Django2.0 URL配置
一.实例 先看一个例子: from django.urls import path from . import views urlpatterns = [ path('articles/2003/', ...
- Django2.0 URL配置详解
转自:https://www.cnblogs.com/feixuelove1009/p/8399338.html Django2.0发布后,很多人都拥抱变化,加入了2的行列. 但是和1.11相比,2. ...
- Django2.0路由补充之path,re_path及视图层
以下是Django2.0版本 正则捕获到的参数都是字符串,所以如果函数需要用的其他数据类型,可以在函数中直接转换,也可以在路由中直接转换,如下: 下面实例是匹配整数,传过去的参数就是整数 from d ...
- django2.0 路由规则
Django2.0中URL的路由机制 路由是关联url及其处理函数关系的过程.Django的url路由配置在settings.py文件中ROOT_URLCONF变量指定全局路由文件名称. Django ...
- Django2.0如何配置urls文件
刚开始学django,创建的第一个工程无法启动,后来发现是由于教程是针对较低版本的Django,我用的是Django2.0和Python3.6,两个都是发文为止的最新版本,urls文件设置方法和旧版本 ...
- Core3.0路由配置
前言 MSDN文档,对ASP.NETCore中的路由完整的介绍 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/routing?vi ...
- python Django2.0如何配置urls文件
刚开始学django,创建的第一个web工程无法启动,后来发现是由于教程是针对较低版本的Django,我用的是Django2.X和Python3.7,urls文件设置方法和旧版本不一致,按照之前的版本 ...
- Django2.0.1开发框架搭建
1.使用vs2017创建空白django项目 2.右键python环境的env---安装python包 升级django到2.0.1和setuptools到38.4.0版本,具体环境如下: 3.配置 ...
随机推荐
- vue使用Vant UI中的swiper组件及传值
子组件SwiperBanner <!-- --> <template> <div class="swiper"> <van-swipe : ...
- SpringMVC: JSON
SpringMVC:JSON讲解 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛. 采用完全独立于编 ...
- P 1034 有理数四则运算
转跳点:
- P 1030 完美数列
转跳点:
- HDU - 5898 odd-even number (数位dp)
题意:求一个区间内,满足连续的奇数长度是偶数,连续的偶数长度是奇数的数的个数. #include<cstdio> #include<cstring> #include<c ...
- Java中的Math.abs()
Math.abs(n):对int.long.float.double类型的数取绝对值 其中 int 类型的数取值范围是 -2^31——2^31-1(-2147483648 ~ 2147483647) ...
- 51nod 1435:位数阶乘
1435 位数阶乘 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 X是一个n位数的正整数 (x=a0a1...a ...
- Vulkan SDK 之 Depth Buffer
深度缓冲是可选的,比如渲染一个3D的立方体的时候,就需要用到深度缓冲.Swapchain就算有多个images,此时深度缓冲区也只需要一个.vkCreateSwapchainKHR 会创建所有需要的i ...
- poj_2406 KMP寻找重复子串问题
B - Power Strings Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u S ...
- 从内存上限说起 VMware内存分配初探
原文链接:http://blog.51cto.com/cxpbt/463777 [IT168 应用技巧]为方便识别虚拟的资源和物理(或叫真实的)资源,本人文章中以小写字母v前缀标识虚拟资源,小写字母p ...