• orm路由层


    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<year>[0-9]{4})/(?P<mounth>[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<year>[0-9]{4})/(?P<mounth>[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/path:year', 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/<yyy:year>', 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/<yyy:year>', views.re_test,name='test'),
    
  • 相关阅读:
    数组,一维,二维,多维
    类函数:string、math
    while和for的内嵌
    循环语言(for)
    选择语言之switch case
    程序语言
    语言、数据和运算符
    原理之一,进制转换
    HTML第一部分
    结构体共用变量 递归
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9924100.html
Copyright © 2020-2023  润新知