ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django之路由层

2022-03-02 18:35:28  阅读:141  来源: 互联网

标签:url Django 反向 urls 分组 解析 路由


Django之路由层

 

路由匹配

  url方法第一个参数是正则表达式

    只要第一个参数正则表达式能够匹配到内容,那么就会立刻停止往下匹配,直接执行对应的试图函数

  / 的作用

 

   ^ 的作用

   $ 的作用

  $ 可以精确到具体匹配那个字符

   首页

 

   浏览器页面不加 / 也能匹配到内容

无名分组与有名分组

  无名分组

  分组就是给某一段正则表达式用小括号括起来

  无名分组就是将括号内正则表达式匹配到的内容当作位置参数传递给后面的视图函数

 

 

   有名分组

  就是给正则表达是起一个别名

  有名分组就是将括号内正则表达式匹配到的内容当作关键字参数传递给后面的视图函数

 

 

   注意事项

  1、无名分组和有名分组不能混用

  2、单个的分组可以使用多次(无名和有名分组都可以)

反向解析

  通过一些方法得到一个结果,该结果可以直接访问对应的url触发对应的试图函数

  最简单的情况

  url第一个参数里面没有正则符号

    1、先给路由与试图函数起一个别名(目的是方便url里面的test1_1更改)

    2、反向解析

      2.1、前端反向解析

        {% url 别名 %}

 

     2.2、后端反向解析(reverse模块)

 

   无名分组的反向解析

    urls文件

     前端(1是自定义的)

 

     后端(args=(1)中的1自定义的)

   前后端反向解析中的数字定义

    数字一般情况下放的是数据的主键值,利用主键值来做数据的编辑和删除

  有名分组的反向解析

    urls文件

     后端反向解析

    写法1:

def home(request):

    print(reverse('ooo', kwargs={'year': 123}))

    return render(request, 'home.html')

    写法2:

def home(request):
    print(reverse('ooo',args=(1,)))
    return render(request, 'home.html')

     前端反向解析

    写法1:

<a href="{% url 'ooo' year=1 %}">111</a>

    写法2:

<a href="{% url 'ooo' 1 %}">111</a>

路由分发

  路由分发的应用场景

  1、Django的每一个应用都可以有自己的templates文件夹,urls.py、static文件夹,正是基于这个特点,Django能够非常好的做到分组开发(每个人只写自己的app),公司中组长只需要将下属写的app全部拷贝到一个新的Django项目中,然后在配置文里面注册所以的app再利用路由分发的特点将所以app整合起来

  2、当一个Django项目中url特别多的时候,总路由urls.py代码非常冗余不好维护,这个时候也可以利用路由分发来减轻总路由的压力

利用路由分发之后,总路由不再干路由与视图函数的直接对应关系,而是做一个分发处理,识别当前url是属于那个应用下的,直接分发给对应的应用去处理

  路由分发的实现

     app01urls文件

    app02urls文件

    总路由

    第一种写法

复制代码
from django.conf.urls import url, include
from django.contrib import admin
from app01 import urls as app01_urls
from app02 import urls as app02_urls
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^app01/', include(app01_urls)),
    url(r'^app02/', include(app02_urls))
复制代码

     第二种(推荐)

url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls'))

  注意:总路由里面的url后面不能加$结尾

END

标签:url,Django,反向,urls,分组,解析,路由
来源: https://www.cnblogs.com/Snailsys/p/15956436.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有