django第四天

路由别名

1.路由别名:
给路由路径命名一个名字
url(r'^login/$',views.login,name = 'login')
2.为什么要用路由别名
①当路由路径过长时,写起来会比较复杂,可以使用简短的别名,减少代码量
②当路由路径需要修改时,如果都是用路由路径的话,则扩展性较差,而使用别名来反向解析路由路径的话,只需要修改路由路径就ok了,扩展性高
3.如何用路由别名
在模板中.html文件
href = {% url '路由别名' 参数1,参数2...参数n%}
在重定向函数中
def login(request):
url = reverse("路由别名")
return redirect(url)

名称空间

名称空间:当项目的应用较多时,别名可能存在相同的可能
此时可以定义名称空间,以保证查找的唯一性
如何用名称空间
主路由:
url(r'^app01/',include('app01.urls',namespace='app01'))
子路由:
urlpatterns = [
url(r'^test/',views.test,name ="test")
]
模板:
{% url 'app01:test' %}
视图函数:
url = reverse('app01:test')

2.x新特性

from django.urls import path,re_path
1. 2.x re_path的使用方式同1.x版本url
2. path写的是绝对字符串,请求地址必须与路由地址完全匹配
3. path拥有5个转换器:
str:匹配除路径分隔符/外的字符串
int:匹配自然数
slug:匹配字母,数字,横杠及下划线组成的字符串
uuid:匹配uuid形式的数据
path:匹配任何字符串,包括路径分隔符/

自定义转换器

1.在应用文件夹下创建converter.py文件
2.在converter.py文件中创建自定义类
3.在类中定义regex 正则,
to_python方法
to_url方法
对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点:
regex 类属性,字符串类型
to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。
to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。 class CVT185Phone:
regex = '185\d{8}'
def to_python(self, value):
return int(value)
def to_url(self, value):
return '%11d' % value
4.在主路由下导入,生成转换器
from django.urls import register_converter
from app.converter import CVT185phone
register_converter(CVT185phone,'phone185') path('page/<phone185:msg>/',views.page,name="pages")

django第四天(路由别名,django2.x新特性和自定义转换器)的更多相关文章

  1. Django2.1发布,Django2.1新特性

    Django 2.1 现已正式发布,官方表示随着 2.1 的发布,对 2.0 系列的主流支持服务将结束,进入安全修复服务周期,直至2019年4月. 2.1新特性:https://docs.django ...

  2. Flask自定义转换器,实现路由匹配正则表达式参数

    Flask框架动态路由实现参数传递和Django框架有类似之处,但是相比于Django框架,Flask实现复杂的参数就需要自己自定义转换器来实现了,而不能向Django那样直接使用正则表达式 # 路由 ...

  3. Django框架(四)-- 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别、Django虚拟环境搭建

    路由控制 一.简单路由配置 url(r'^booklist$', views.booklist) 第一个参数是正则表达式,第二个参数是视图函数 每个正则表达式前面的'r' 是可选的但是建议加上.它告诉 ...

  4. Django框架(四)—— 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别

    目录 路由控制 一.简单路由配置 二.无名分组 三.有名分组 四.反向解析 五.路由分发 六.名称空间(一般不使用) 七.伪静态 八.Django 2.x和Django 1.x 路由层区别 九.APP ...

  5. 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

    一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...

  6. Django学习(四) Django提供的后台管理系统以及如何定义URL路由

    一旦你建立了模型Models,那么Django就可以为你创建一个专业的,可以提供给生成用的后台管理站点.这个站点可以提供给有权限的人进行已有模型Models数据的增删改查. 将新建的模型Models是 ...

  7. Django框架——基础之路由系统(urls.py)

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  8. Django框架——基础之路由系统(urls.py)11111111

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  9. django 实战篇之路由层

    路由层 如何给网页添加首页及尾页 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'test',views.test), url(r'te ...

随机推荐

  1. C# 面向对象之3个基本特征

    C#是面向对象的语言,每个面向对象语言都有3个基本特征: *封装----把客观的事物封装成类,并将类的内部实现隐藏,以保证数据的完整性. *继承----通过继承可以复用父类的代码. *多态----允许 ...

  2. redis配置配置文件

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  3. Codeforces 1114E(简单交互)

    这里有一道老实题,大家快来踩爆它! 交互题:根据你的输出决定下一次的输入. 请听题: 管理员有个乱序数列(举例:{14, 24, 9, 19}),排序以后是个等差数列({9, 14, 19, 24}) ...

  4. kickstart_2018_round_H_C Let Me Count The Ways

    思路: 容斥. 实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ll f[MAXN ...

  5. Power BI 连接到 Azure 账单,自动生成报表,可刷新

    开始研究Azure官网等,提供的链接都是错误的,躺了很大的一个坑,配置后根本无法获取账单信息,经过多次查询找到了方向,过来记录一下: 错误的地址(应该是适用于全球版,国内版无法这样获取): https ...

  6. freebsd安装snmp

    pkg_add http://ip地址/pub/FreeBSD/ports/packages/Latest/net-snmp.tbzFetching http://ip地址/pub/FreeBSD/p ...

  7. XSS 攻击实验 & 防御方案

    XSS 攻击&防御实验 不要觉得你的网站很安全,实际上每个网站或多或少都存在漏洞,其中xss/csrf是最常见的漏洞,也是最容易被开发者忽略的漏洞,一不小心就要被黑 下面以一个用户列表页面来演 ...

  8. HDU 3033 I love sneakers! 我爱运动鞋 (分组背包+01背包,变形)

    题意: 有n<=100双鞋子,分别属于一个牌子,共k<=10个牌子.现有m<=10000钱,问每个牌子至少挑1双,能获得的最大价值是多少? 思路: 分组背包的变形,变成了相反的,每组 ...

  9. 51nod 1526 分配笔名

    题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题. 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一 ...

  10. 使用JavaScript调用手机平台上的原生API

    我之前曾经写过一篇文章使用Cordova将您的前端JavaScript应用打包成手机原生应用,介绍了如何使用Cordova框架将您的用JavaScript和HTML开发的前端应用打包成某个手机平台(比 ...