Django-带参数的路由编写(一)【不用正则表达式匹配的简单带参数路由】

在Django中,URL参数的str类型接受任何非空字符串,而slug类型限制为字母、数字、连字符和下划线,适用于URL友好的字符串。slug类型会对特殊字符进行转换,确保URL的整洁。示例代码展示了str和slug类型在路由中的应用。
摘要由CSDN通过智能技术生成

在某urls.py文件有如下的路由配置语句:

urlpatterns = [
    path('app2/show/<int:id>/',views.show_id),
]

语句:

 path('app2/show/<int:id>/',views.show_id),

中的<int:id>就是带参数的URL中的参数部分,其语法格式如下:
<参数数据类型:参数名称>
URL参数有4种数据类型,如下表所示:
在这里插入图片描述
提问:
Django的URL参数中的str类型和slug类型有什么区别?感觉都是对字符串的匹配啊!
答:
在Django中,URL参数中的str类型和slug类型都用于匹配字符串,但它们有一些细微的区别。

str类型是最常用的URL参数类型,它接受任何字符,包括字母、数字和特殊字符。使用str类型的URL参数,Django将匹配并传递任何非空字符串作为参数的值。

slug类型也用于匹配字符串,但它有一些额外的限制。slug类型只接受字母、数字、连字符和下划线,通常用于表示URL友好的字符串。当使用slug类型的URL参数时,Django会自动将特殊字符转换为连字符,并忽略额外的空格或特殊字符。

区别在于,slug类型对URL友好的字符串进行了约束,仅接受特定字符,并进行了自动转换。这使得slug类型的URL参数更适合在URL中使用,例如用于博客文章的短链接。而str类型更通用,可以接受任何非空字符串作为参数的值。

总结起来,str类型接受任何字符串,而slug类型仅接受包含字母、数字、连字符和下划线的字符串,并对特殊字符进行了自动转换。选择使用哪种类型取决于你的需求和URL参数的预期格式。

下面是一个实例:
E:\Python_project\P_001\myshop-test\myshop\myshop\urls.py 中的代码:

from django.urls import path, include
from app1 import views

urlpatterns = [
    path('article/<int:num>/', views.show_num),
    path('article/<slug:chars>/', views.show_chars),
]

E:\Python_project\P_001\myshop-test\myshop\app1\views.py 中的代码:

from django.shortcuts import render  # 默认导入的模块
from django.http import HttpResponse  # 导入HttpResponse模块

# Create your views here.


def show_num(request, num):
    return HttpResponse('show_id方法,参数为num,值为'+str(num))


def show_chars(request, chars):
    return HttpResponse('show_chars方法,参数为chars,值为'+str(chars))

运行Django应用:

CD E:\Python_project\P_001\myshop-test\myshop
E:
python manage.py runserver 127.0.0.1:8022

浏览器中访问下面这些URL路径:

http://127.0.0.1:8022/article/3159/
http://127.0.0.1:8022/article/2120/

http://127.0.0.1:8022/article/hkas/
http://127.0.0.1:8022/article/ej3yh8/

运行效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上面的代码下载链接:
https://pan.baidu.com/s/1M1NQnr5wexeSXFnJzBhHfw?pwd=jhl8

延伸阅读:
Django-带参数的路由编写(二)【用正则表达式匹配复杂路由】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值