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.配置 ...
随机推荐
- POJ 2187:Beauty Contest 求给定一些点集里最远的两个点距离
Beauty Contest Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 31414 Accepted: 9749 D ...
- 由于找不到msvcp100.dll无法继续执行代码
最近重装系统之后安装mysql, 执行 mysqld install 命令时出现 : 由于找不到msvcp100.dll无法继续执行代码... 解决办法 下载 Microsoft Visual C++ ...
- vmware桥接模式-无法内网通-克隆机要删除的文件-ssl
网卡太多自动模式有时候无法正常通信需要绑定外部网卡 rm /etc/udev/rules.d/-persistent-ipoib.rules vmware报错 Microsoft Runtime DL ...
- [Python函数]encode,decode
前言: 我们知道,计算机是以二进制为单位的,也就是说计算机只识别0和1,也就是我们平时在电脑上看到的文字,只有先变成0和1,计算机才会识别它的意思.这种数据和二进制的转换规则就是编码.计算机的发展中, ...
- SublimeText3和插件的安装
SublimeText3和插件的安装 步骤一:进入官网下载SublimeText3(http://www.sublimetext.com/3),安装并打开SublimeText3 步骤二:进入Su ...
- redhat8 不支持ansible批量管理解决方案
redhat8默认不安装python,因此无法通过python去管理,直接上解决方案. dnf install python3 -y alternatives --set python /usr/bi ...
- Windows10 与 WSL(Ubuntu)的文件互访
从WSL访问win10的文件 > cd /mnt 从win10访问WSL的文件 打开Ubuntu > explorer.exe . (后面的点不要漏掉)
- JZOJ823PJ-C, TG-B
分身打两场比赛 PJ - C 翻车 T1 原题, 考虑蚂蚁相撞时其实不用管. 然后写个取左右max, 左右min的即可 翻车: 注释freopen后JZOJ不会提示!(大翻车--丢了300分) T2 ...
- QMainWindow的空间布局结构
简单讲一下Qt的QMainWindow的结构,Qt的顶级窗口有三种类型,首先是万恶之源(...应该说是大部分控件的父类...)的QWidget,然后是QMainWidget和QDialog,后面两者也 ...
- 12 react 基础 的 css 过渡动画 及 动画效果 及 使用 react-transition-group 实现动画
一. 过渡动画 # index.js import React from 'react';import ReactDOM from 'react-dom';import App from './app ...