博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
orm路由层
阅读量:6321 次
发布时间:2019-06-22

本文共 2498 字,大约阅读时间需要 8 分钟。

orm路由层

1.路由文件urls.py

urlpatterns = [    url(r'^admin/', admin.site.urls,name='admin'),    ]

​ 1)其中的url是一个函数,第一个参数r'^admin/,传的是正则表达式,进行的是路由匹配,

​ 2)第二个参数传的是视图函数

​ 3)第三个参数传的是名字,用于反向解析

2.无名分组(主要与反向解析一起使用)

​ 1.在url的函数的第一个参数中进行分组(分几组就要有几个参数接收)(主要为视图函数接收做准备)

url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),

​ 2.视图函数的接收方式为def publish(request,cs1,cs2),cs1接收([0-9]{4}),cs2接收([0-9]{2})

3.有名分组(主要与反向解析一起使用)

​ 1.与无名分组类似但是要为组进行命名

url(r'^publish/(?P
[0-9]{4})/(?P
[0-9]{2})/$', views.publish)

​ 2.视图函数的接收方式为def publish(request,year,mounth)

4.反向解析

​ 将前端页面上{% url 'ddd' %}中的值传给视图函数

​ 1.先在路由层进行命名,第三个参数的名字就是用于反向解析

url(r'^publishadd133/$', views.publishadd,name='ddd')

​ 无名分组

url(r'^publishadd/([0-9]{4})/([0-9]{2})/$', views.publishadd,name='ddd')

​ 有名分组

url(r'^publishadd/(?P
[0-9]{4})/(?P
[0-9]{2})/$', views.publishadd,name='ddd')

​ 2.在模板层使用的方式

1 无参数:{% url 'ddd' %}2 无名分组的:{% url 'ddd' 2018 12 %}3 有名分组:{% url 'ddd' 2018 12 %}  还可以 {% url 'ddd' year=2018 mounth=12 %}

​ 3.在视图函数中的使用

无参数:url=reverse('ddd') 无名分组:url=reverse('ddd',args=(2018,12,)) 有名分组:url=reverse('ddd',args=(2018,12,)) 还可以 url=reverse('ddd',kwargs={'year':2018,'mounth':12})

5.路由的分发

​ 主要是用于协同开发,在每一个应用中都创建一个路由urls.py,再在总的路由文件urls.py中建立关系

from django.conf.urls import include url(r'^blog/',include('blog.urls')), //就是建立了与blog应用中blog.urls路由表的路由关系

6.django2.0与django1.0路由层的区别

​ django2.0路由中主要使用的是 re_path和path

​ re_path:用法跟1.0的url的用法相同

​ path:传的是路径,是准确的路径

​ 使用path分组时会用到5个转换器--->path('test/', views.re_test)

​ str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式

​ int,匹配正整数,包含0。
​ slug,匹配字母、数字以及横杠、下划线组成的字符串。
​ uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
​ path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)

7.自定义一个转换器

1 定义一个类:    class MyCon:    # 写一个正则表达式    regex = '[0-9]{4}'    1 定义一个类:    class MyCon:    # 写一个正则表达式    regex = '[0-9]{4}'    # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收    def to_python(self, value):        return int(value)    # 反向解析用的    def to_url(self, value):        return '%04d' % value    2 from django.urls import register_converter        register_converter(MyCon,'yyy')    3 path('test/
', views.re_test,name='test'), # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收 def to_python(self, value): return int(value) # 反向解析用的 def to_url(self, value): return '%04d' % value 2 from django.urls import register_converter register_converter(MyCon,'yyy') 3 path('test/
', views.re_test,name='test'),

转载于:https://www.cnblogs.com/jianhaozhou/p/9924100.html

你可能感兴趣的文章
LabVIEW将字符串转化为十进制
查看>>
欢迎光临
查看>>
20131205
查看>>
数组相减
查看>>
【poj 1962】Corporative Network(图论--带权并查集 模版题)
查看>>
使用AngularJS学习MVC的基础知识分享
查看>>
UDP template 代码
查看>>
爬虫 高性能
查看>>
使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(二)
查看>>
干吧跌!~brothers!~~
查看>>
linux 0.11 源码学习(七)
查看>>
函数模板的简单用法
查看>>
利用 LINQ的skip和Take 方法对List实现分页效果
查看>>
python 中的列表解析和生成表达式 - 转
查看>>
jQuery数组的遍历 function的加载
查看>>
杂记~~~MFC SOCKET
查看>>
AWK文本处理工具(Linux)
查看>>
完成评论功能
查看>>
VC 输入法注入源码
查看>>
BinaryTree I
查看>>