django 2.0最新版 urls 不支持正则表达式问题

django最新版url默认不支持正则,标准格式:

path('admin/', admin.site.urls),

如果需要使用正则,需要导入:re_path,使用方法:

from django.urls import path,re_path
urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^test-(\d+)-(\d+)/', views.test),
    path('index/', views.index),
]

示例:

1.urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    #re_path(r'^test-(\d+)-(\d+)/', views.test), #普通写法,函数参数必须严格按照顺序获取数值
    re_path(r'^test-(?P<v1>\d+)-(?P<v2>\d+)/', views.test), #分组写法,函数参数可以随意调换位置
    path('index/', views.index),
]

2.views.py

#第一种写法,严格按照顺序获取参数值
# def test(request,v1,v2):
#     print(v1,v2)
#     return render(request,"index.html")

#第二种写法,按照key获取value,参数只能是两个
# def test(request,v2,v1):
#     print(v1,v2)
#     return render(request,"index.html")

#第三种写法,**kwargs可以获取多个键值对
# **kwargs获取字典的值,*args获取元组的值
def test(request,*args,**kwargs):
    for k,v in kwargs.items():
        temp = int(v)
        kwargs[k]=temp
        if temp:
            print(temp)
    print(kwargs)
    print("v1",kwargs["v1"])
    print("v2",kwargs["v2"])
    return render(request,"index.html")

def index(request):
    return render(request,"index.html")

3.Templates

<p><a href="/test-3-2">点我测试url1</a></p>
<p><a href="/test-3-1">点我测试url2</a></p>
<p><a href="/test-5-6">点我测试url3</a></p>

4.执行结果:

3 2
[04/Dec/2018 22:41:44] "GET /test-3-2/ HTTP/1.1" 200 269
3 1
[04/Dec/2018 22:41:48] "GET /test-3-1/ HTTP/1.1" 200 269
5 6
[04/Dec/2018 22:41:49] "GET /test-5-6/ HTTP/1.1" 200 269
{'v1': 5, 'v2': 6}
v1 5
v2 6
[04/Dec/2018 23:05:09] "GET /test-5-6/ HTTP/1.1" 200 269
 

views获取值的三种写法:

#第一种写法,严格按照顺序获取参数值
# def test(request,v1,v2):
#     print(v1,v2)
#     return render(request,"index.html")

#第二种写法,按照key获取value,参数只能是两个
# def test(request,v2,v1):
#     print(v1,v2)
#     return render(request,"index.html")

#第三种写法,**kwargs可以获取多个键值对
# **kwargs获取字典的值,*args获取元组的值
def test(request,*args,**kwargs):
    for k,v in kwargs.items():
        temp = int(v)
        kwargs[k]=temp
        if temp:
            print(temp)
    print(kwargs)
    print("v1",kwargs["v1"])
    print("v2",kwargs["v2"])
    return render(request,"index.html")

def index(request):
    return render(request,"index.html")
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值