ICode9

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

Django路由配置-快速上手

2021-10-28 15:30:12  阅读:143  来源: 互联网

标签:URL 配置 Django 参数 urls test path include 路由


Django路由配置-快速上手

Django路由系统配置代码在urls.py中,该文件在创建项目时自动生成,一般在项目目录下。

路由系统URL基本格式

在urls.py文件中配置的路由,都存放在一个名为urlpatterns的变量中,这个变量是列表类型

from django.contrib import admin
#从django.contrib模块中导入admin函数,这个函数加载DjangoAdmin管理后台的URL。
from django.urls import path
#从django.urls模块中导入include()和path()两个函数。
#include()用于导入另一个URL配置文件;
#path()使用正则表达式匹配浏览器中的URL,把它映射到视图函数上。

#urlpatterns 中的每一个列表项就是一条对应关系(URL与视图函数的对应关系),这种对应关系称作URL配置(URLconf)。
urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/', include('xxxx.urls')),
    path('test/<int:id>', views.test),
]

path (URL正则表达式,视图函数,参数,别名),

path()中的第一个参数称为URL正则表达式,它是字符串形式。

第二个参数是视图函数名,第一个参数和第二个参数是对应关系。

后面两个参数是可选的,第三个参数表示可以传给视图函数的额外的参数,参数是字典类型

第四个参数给这个对应关系列表项的URL起了别名,使程序可以按名字调用这个配置项。

path()的URL参数

path('test/<int:id>', test)
path()函数的第一个参数的角括号里的内容,称作URL参数。
URL参数冒号左边为参数数据类型,右边为参数名称,如<int:id>表示的参数名称为id,数据类型为int。

URL参数主要有以下数据类型:

str:匹配的任意非空字符串,但不包括分隔符“/”。

int:匹配0或任意正整数。●slug:匹配字母、数字、短横线、下划线组成的字符串。

uuid:匹配一个格式化的UUID(Univerally Unique Identifier,通用唯一识别码),UUID是由数字、小写字母、破折号等组成的唯一识别码。

path:匹配任意非空字符串,包含分隔符“/”。

re_path()函数

re_path()函数中URL正则表达式中的URL参数用的是命名式分组语法

re_path(data1/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.test),

re_path()中URL参数year通过[0-9]{4}这个正则表达式来严格匹配4位的整数,month通过[0-9]{2}这个正则表达式来严格匹配2位的整数。

一个括号就是一个分组,一个分组有一个参数,因为是命名式分组,所以传给视图函数的也是命名参数。

路由分发

from django.urls import path,include
urlpatterns = [
	path('myapp/',include('myapp.urls')),
]

路由分发使用的是include()方法,需要提前导入相应的模块path和include。

include()括号内的字符串要用引号括起来,参数是导入的其他配置模块(文件),它表示的是导入的模块的路径字符串,路径以圆点分割。

建立二级路由

from django.urls import path,include
urlpatterns = [
	path('test/',views.test),
]

二级路由配置建立后,对应关系变成了一级路由和二级路由串联起来与视图函数的对应。

如“path(‘test/’, views.test),”的实际对应关系变成“path(‘myapp/test/’, views.test),”的对应关系。

路由命名空间

多个应用程序使用相同的名称也可以通过命名空间把它们区分开。

from django.urls import path,include
urlpatterns = [
# 通过include()函数导入二级配置模块,并设置命名空间
path ('app1/', include('app1.urls', namespace='app1')),
path ('app2/', include('app2.urls', namespace='app2')),
]

#app01中的urls.py(二级配置文件),代码如下。
from django.urls import path,include
from app1 import views
# 指定命名空间app_name = 'app01'
urlpatterns = [
# 给配置项命名为test
    path('test/', views.test, name='test')
]
app02中的urls.py(二级配置文件),代码如下。
from django.urls import path,include
from app2 import viewsapp_name = 'app02'
urlpatterns = [
    # 给配置项命名为test
    path('test/', views.test, name='test')
]

两个应用程序的URL名称重复

我们反向解析URL的时候就可以通过命名空间的名称得到正确的URL

{% url 'app01:test' %}

在views中的函数中使用以下代码反向解析

v = reverse('app01:test')

标签:URL,配置,Django,参数,urls,test,path,include,路由
来源: https://blog.csdn.net/weixin_42403632/article/details/121015355

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

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

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

ICode9版权所有