在Django中URL正则表达式匹配的方法
Django框架中的URL分发采用正则表达式匹配来进行,以下是正则表达式的基本规则:
官方演示代码:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ]
注意:
不需要在前面加上‘/'(slash),举个栗子,要写成'^articles', 而不是' ^/articles'。
在之前的'r'字母告诉Pyhton解释器这个String是一个“raw”— 原始字符串
注:
Python中原始字符串(raw)的产生正是由于有正则表达式的存在。原因是ASCII 字符和正则表达式特殊字符间所产生的冲突。比如,特殊符号“\b”在 ASCII 字符中代表退格键,但同时“\b”也是一个正则表达式的特殊符号,代表“匹配一个单词边界”。
为了让RE 编译器把两个字符“\b”当成你想要表达的字符串,而不是一个退格键,你需要用另一个反斜线对它进行转义,即可以这样写:“\b”。
但这样做会把问题复杂化,特别是当你的正则表达式字符串里有很多特殊字符时,就更容易令人困惑了。在第六章,我们曾介绍过原始字符串,它经常被用于简化正则表达式的复杂程度。事实上,很多Python 程序员在定义正则表达式时都只使用原始字符串。
以上这篇在Django中URL正则表达式匹配的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
对于多对多表 - 1.自定义第三张表,更加灵活 - 2.ManyToManyField 自动生成第3张表 只能 有3列数据 不能自己添加. 自定义第三张表 # models.py class Boy(models.Model): name = models.CharField(max_length=32) class Girl(models.Model): name = models.CharField(max_length=32) class Love(models.Model): b = m
-
解决新django中的path不能使用正则表达式的问题
新版的path 虽然 取代了 之前的url,但是在写路由的时候不能在路由中直接写正则表达式,不然会找不到页面. 解决方法 使用re_path from django.urls import re_path,path urlpatterns = [ path('admin/', admin.site.urls), re_path('edit/(\d+)',views.edit), ] 这样就可以 使用正则了. 以上这篇解决新django中的path不能使用正则表达式的问题就是小编分享给大家的全部内
-
详解Django model update的各种用法介绍
Django开发过程中对表(model)的增删改查是最常用的功能之一,本文介绍笔者在使用model update过程中遇到的那些事 [ 运行环境:Django2.0 ] model update常规用法 假如我们的表结构是这样的 class User(models.Model): username = models.CharField(max_length=255, unique=True, verbose_name='用户名') is_active = models.BooleanField(
-
django多对多表的创建,级联删除及手动创建第三张表
创建一张作者表,author,创建外键与book表,多对多关系 ,外键字段放在那张表都可以, class Author(models.Model): name = models.CharField(max_length=32) #在Author表中创建第三张表,与book表创建多对多关系一样的效果 # books = models.ManyToManyField(Book) #再重新生成数据库,因为新增了多对多关系,book表会新增字段,所以直接重新生成数据库就会报错, 在book表里,关联Au
-
解决Django migrate No changes detected 不能创建表的问题
起因 修改了表结构以后执行python3 manage.py migrate 报错: django.db.utils.OperationalError: (1091, "Can't DROP 'email'; check that column/key exists") 所以进数据库把对应的表删除了,想着重新生成这张表. 删除表以后执行: python3 manage.py makemigrations python3 manage.py migrate 还是不能生成表,提示:No c
-
django模型层(model)进行建表、查询与删除的基础教程
前言 在django的框架设计中采用了mtv模型,即Model,template,viewer Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架设计应用系统时,需要注意的是django默认采用的是orm框架中的codefirst模型,也就是说开发人员只需要专注于代码的编写,而不需要过多的关注数据库层面的东西,把开发人员从数据库中解放出来 django会根据Model类生成一个数据库镜像文件,然后再使用该镜像文件生成数据库,同时该文件将
-
django 多对多表的创建和插入代码实现
这篇文章主要介绍了django-多对多表的创建和插入代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 表的创建 # 作者和书籍之间的多对多关系 class Author(models.Model): ''' 作者表 ''' nid = models.AutoField(primary_key=True) name = models.CharField(verbose_name='作者名称',max_length=32) # 第一种方式直接
-
在Django中URL正则表达式匹配的方法
Django框架中的URL分发采用正则表达式匹配来进行,以下是正则表达式的基本规则: 官方演示代码: from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/
-
Django中url的反向查询的方法
本文介绍了Django中url的反向查询的方法,分享给大家,具体如下: 明确几个概念: 1.application namespace : 正在部署的app的名称,一个app的多个实例应该具有相同的application namespace. 可以通过在URLconf模块(urls.py)中设置 app_name 属性(与urlpatterns属性同级)来指定application namesapce. (在django2.0版本中必须设置 app_name ) 2.instance names
-
详解django中url路由配置及渲染方式
今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 创建视图并访问 项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py. 然后在views.py中,导入头文件 from django.http import HttpResponse 然后我们在views.py中,写一些Python函数,用来访
-
Django中url与path及re_path的区别说明
Django中url与path及re_path区别 初学者一般不能分清两者的区别,所这简单介绍下两者.首先,url是Django 1.x中的写法,p在Django2.1中,开始舍弃django1.x中的url写法. 在django2.x中,描写url配置的有两个函数path和re_path.re_path()函数可以看做是django 1.x中得url函数,即可以在路径中使用正则. 一.path和url的区别: django.urls path django.conf.urls url path
-
django中url映射规则和服务端响应顺序的实现
1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单. 查看方式: import sys print sys.path 通常无需关心 Python 搜索路径的设置,Python 和 Django 会在后台自动帮你处理好. 2.url匹配模式 基本结构: '^需要匹配的url字符串$' PS:实际上最终完整的url串是http://根路径:端口号/需要匹配的url字符串 系统自动添加的部分'http://根路径:端口号/' eg:url匹配模式:'^lates
-
MySql中使用正则表达式查询的方法
正则表达式常用来检索和替换那些符合魔种模式的文本.例如从一个文本文件中提取电话号码,查找一篇文章中重复的单词或者替换用户输入的某些敏感词汇等.Mysql 使用 REGEXP 关键字指定正则表达式的字符匹配模式. 1. 字符 '^' 查询以特定字符或字符串开头的记录 SELECT * FROM user WHERE email REGEXP '^a' 字符 '^' 匹配以特定字符或字符串开头的记录,以上语句查询邮箱以 a 开头的记录 2. 字符 ' 查询以特定字符或字符串结尾的记录 SELECT
-
C# 中使用正则表达式匹配字符的含义
正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成.接下来通过本文给大家介绍C# 中使用正则表达式匹配字符的含义. 1.正则表达式的作用:用来描述字符串的特征. 2.各个匹配字符的含义: . :表示除\n以外的单个字符 [ ] :表示在字符数组[]中罗列出来的字符任意取单个 | :表示"或"的意思 () :表示改变优先级或"提取组" * :限定前面的表达式出现0次或多次 + :限
-
Django中常用的查询数据方法及查询对象的条件详解
(1)常用的查询方法: 1.获取所有记录: s = User.objects.all() 2.获取第一条数据: s = User.objects.first() 3.获取最后一条数据: s = User.objects.last() 关于二.三两个方法注意点: 对于QuerySet对象,我们也是可以通过下标取值获取对应的实例对象.如下所示--虽然这两个方法作用一致(获取到对应的实例对象),但是推荐使用(而且一般使用的)都是first()方法及last()方法. 原因--如果查询的数据不存在的话,
-
django中操作mysql数据库的方法
目录 1.准备工作(django连接数据库) 2.django操作数据库(ORM) 2.1 ORM简介 2.2 创建表和字段 2.3 字段的增删改查 2.4 单表数据的增删改查 2.4.1单表数据的查询 2.4.2单表数据的增加 2.4.3单表数据的修改 2.4.4单表数据删除 2.4.5补充13条单表查询 2.4.6 神奇的双下划线查询 2.5 多表数据操作 2.5.1 orm创建表关系 2.5.2 一对多关系的增删改 2.5.3 多对多关系的增删改 2.5.4 多表的查询操作 2.6 字段类
-
Django中template for如何使用方法
之前我们讲过很多次for循环了,python中的循环有不少,不知道有没有听过template for这个循环,这个也算是for循环的这一种延伸. 在for循环中还有很多有用的东西,如下: 变量 描述 forloop.counter 索引从 1 开始算 forloop.counter0 索引从 0 开始算 forloop.revcounter 索引从最大长度到 1 forloop.revcounter0 索引从最大长度到 0 forloop.first 当遍历的元素为第一项时为真 forloop.
随机推荐
- jquery 插件开发 extjs中的extend用法小结
- JQuery 写的个性导航菜单
- jquery表单验证使用插件formValidator
- 学java得这样学,学习确实也得这样
- 浅谈常用字符串与集合类转换的工具类
- 在ASP.NET中支持断点续传下载大文件(ZT)源码
- 基于Python3 逗号代码 和 字符图网格(详谈)
- UCenter中的一个可逆加密函数authcode函数代码
- 不要使用CSS Expression的原因分析
- jquery判断浏览器后退时候弹出消息的方法
- JS通过ajax动态读取xml文件内容的方法
- 使用XSD校验Mybatis的SqlMapper配置文件的方法(1)
- 非常不错的javascript 图片慢慢下层效果
- 微信小程序开发之map地图实现教程
- Tomcat 多站点配置详解及实现方法
- javascript 使用for循环时该注意的问题-附问题总结
- Struts2学习笔记(4)-通配符的使用
- C#实现判断字符串中是否包含中文的方法
- 网管成长历程——IP地址规划之分配篇1
- Python通过OpenCV的findContours获取轮廓并切割实例