URL配置就像是Django所支撑网站的目录,它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。URL需要在urls.py进行配置,与其对应的视图函数写在views.py文件中。url的配置写在urlpatterns列表的path方法中,对于path的功能,下面一一讲解。

path

  • path方法第一个参数是url路由的配置,还可以通过<xx>/将输入指定url后多余的部分当作参数传给视图函数,视图函数同样要用一个参数xx来接收它。这里默认包含了一个转化器类型,是path转化器,将匹配任何字符串,当然也包括了 / 字符。也可自己指定格式如<int:xx>/,这是指定了一个整形转化器,即只匹配整形作为参数。

转化器的类型如下:

  1. str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式。
  2. int,匹配正整数,包含0。
  3. slug,匹配字母、数字以及横杠、下划线组成的字符串。
  4. uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
  5. 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——路由配置的更多相关文章

  1. Django2.0路由层-URLconf

    目录 DJango2.0路由层-URLconf 概述 urlpatterns 实例 path转换器 自定义path转换器 使用正则表达式 命名组(有名分组) URLconf匹配请求URL中的哪些部分 ...

  2. Django2.0 URL配置

    一.实例 先看一个例子: from django.urls import path from . import views urlpatterns = [ path('articles/2003/', ...

  3. Django2.0 URL配置详解

    转自:https://www.cnblogs.com/feixuelove1009/p/8399338.html Django2.0发布后,很多人都拥抱变化,加入了2的行列. 但是和1.11相比,2. ...

  4. Django2.0路由补充之path,re_path及视图层

    以下是Django2.0版本 正则捕获到的参数都是字符串,所以如果函数需要用的其他数据类型,可以在函数中直接转换,也可以在路由中直接转换,如下: 下面实例是匹配整数,传过去的参数就是整数 from d ...

  5. django2.0 路由规则

    Django2.0中URL的路由机制 路由是关联url及其处理函数关系的过程.Django的url路由配置在settings.py文件中ROOT_URLCONF变量指定全局路由文件名称. Django ...

  6. Django2.0如何配置urls文件

    刚开始学django,创建的第一个工程无法启动,后来发现是由于教程是针对较低版本的Django,我用的是Django2.0和Python3.6,两个都是发文为止的最新版本,urls文件设置方法和旧版本 ...

  7. Core3.0路由配置

    前言 MSDN文档,对ASP.NETCore中的路由完整的介绍 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/routing?vi ...

  8. python Django2.0如何配置urls文件

    刚开始学django,创建的第一个web工程无法启动,后来发现是由于教程是针对较低版本的Django,我用的是Django2.X和Python3.7,urls文件设置方法和旧版本不一致,按照之前的版本 ...

  9. Django2.0.1开发框架搭建

    1.使用vs2017创建空白django项目 2.右键python环境的env---安装python包  升级django到2.0.1和setuptools到38.4.0版本,具体环境如下: 3.配置 ...

随机推荐

  1. ORACLE异库DBLink创建以及使用

    遇到一个问题,两张库数据需要同步,但是数据量很大,落地迁移时间成本太大,这个时候找到一种方法就是DBLink 使用场景说明: A转移数据到B,需要在B上面创建此DBLink,然后使用. 创建方法: - ...

  2. js 一年中多个时间段 天数去重

    Date.prototype.format = function() { var s = ''; var mouth = (this.getMonth() + 1)>=10?(this.getM ...

  3. android——TextView默认文字开发时显示运行时隐藏

    根布局添加属性: xmlns:tools="http://schemas.android.com/tools" textview添加属性: tools:text="默认文 ...

  4. 使用navicat连接mysql8.0.12版本 出现client does not support。。。解决办法

    navicat版本的问题 出现连接失败的原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password ...

  5. Oracle专题

    定时任务:JOB文件夹 监视执行过的SQL 语句 select * from v$sqlarea a where module='PL/SQL Developer' order by a.FIRST_ ...

  6. JavaScript—纯函数

    定义 一个函数的返回结果只依赖它的参数,而且在计算过程中不会产生其他副作用,也就是不会对外部的数据造成影响或改变. 理解:函数的返回结果只依赖它的参数 const a= 1; const b= (c) ...

  7. org.springframework.test.context.junit4.SpringJUnit4ClassRunner

    项目中有了spring-test的依赖,里面确实也有 org.springframework.test.context.junit4.SpringJUnit4ClassRunner 此类,但是项目就是 ...

  8. Notepad++配置

    笔记来源于视频: http://baidu.iqiyi.com/watch/498601896985630918.html?page=videoMultiNeed notepad++ 有个很重要问题, ...

  9. CSS行间样式与内部样式

    注释 <!-- --> 快捷键 crtl+/ div 双标签<div></div> CSS语法    属性名:属性值: Css引入方式 1.行间样式的引入:在标签中 ...

  10. webservice wsdl文件标签讲解

    <?xml version="1.0" encoding="utf8"?> <wsdl:definitions targetNamespace ...