路由系统

Django URL映射详解
本文深入探讨Django框架中的URL映射机制,包括基本格式、捕获参数、使用include进行二级路由设置、字典格式参数传递、反向解析URL以及命名空间的应用,为读者提供全面的Django路由配置指南。

一、实质

url与函数的对应关系,即映射表

位置:urls.py

二、格式

urlpatterns = [
    path('admin/', admin.site.urls),
]
path('', views.index),

注意:只要协议、ip和端口号即可

前面是正则表达式,后面是对应的函数

三、捕获参数

通过url获取值  <>

urls.py文件

path('test/<arg1>/', views.test),

views.py文件

def test(request, arg1):
    print(arg1)
    return HttpResponse("Hello World %s" % arg1)

注意:两个形参的名字要一致,<>里的值默认类型是str,可以通过<int:arg1>进行数据类型的转换

 

注意:GET是通过参数获取值,<>是通过路径获取值

应用场景:删除和修改

四、include(路由)

1、在app中新建urls.py文件,作为二级路由的文件

2、一级路由

位置:项目文件夹下的urls.py文件

from django.urls import include
# 导入二级路由的urls
from app01 import urls as app01_url

# home只是单纯的url
path('home/', include(app01_url)),

3、二级路由

位置:app中新建的urls.py文件

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

4、查看

 

 

注意:path

五、字典格式的参数,传递给视图函数(一般不这么用)

在二级路由传递参数,注意:字典的格式

from django.urls import path
from . import views
urlpatterns = [
    path('json_test/', views.json_test, {"name": 'tom'}),
]

在views.py文件,接收参数

def json_test(request, **kwargs):
    data = kwargs.get("name")
    return HttpResponse(data)

六、反向解析url

1、urls.py  重命名

path('old123/', views.old, name="old_html"),

2、模板系统

<a href="{% url 'old_html' %}">点我,跳转到一个旧网页</a>
<a href="{% url '别名' %}">点我,跳转到一个旧网页</a>

3、视图系统

from django.shortcuts import reverse
def old(request):
    _url = reverse("old_html")
reverse(别名)

含参数的反向解析

1、urls.py文件

path('first/<key>/', views.first, name="first_html"),

2、模板系统

<a href="{% url "first_html" "abc" %}">跳转到第一页</a>

3、视图系统

path('index11/<args>/', views.index, name="index_html"),
path('test/', views.test),
def index(request, args):
    print(request.path_info)
    print(args)
    return HttpResponse(args)



def test(request):
    return redirect(reverse("index_html", args=("tom", )))
  _url = reverse("index_html", args=("tom", ))

 

传递参数

补充、re_path

Django2.0以前的版本,(?p<>)

在一级路由可以加上命名空间  namespace

捕获的参数永远是字符串类型

 命名空间

1、一级路由

path('home/', include(app01_url, namespace='test')),

2、模板系统

<a href="{% url "test:first_html" "abc" %}">跳转到第一页</a>

 

转载于:https://www.cnblogs.com/wt7018/p/11257260.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值