• Django2.0的path方法无法使用正则表达式的解决办法


    本人的django的版本是2.0.6

    在django项目中,在urls.py文件中,匹配路由用的path方法,之前我用的都是url方法

    写了一个path方法,使用正则表达式

    from django.contrib import admin
    from django.urls import path
    from app1 import views
    
    urlpatterns = [
        # path('admin/', admin.site.urls),
        path('test/', views.Test.as_view()),
        path('book/', views.Book_modelserializer_cbv.as_view()),
        path('book/(?P<id>d+)/', views.Book_Detail_modelserializer_cbv.as_view()),
    ]
    

    但是我通过浏览器给django发送get请求,但是总是提示我匹配不到的视图函数

    我的url的路径如下

    http://127.0.0.1:8080/app1/book/1/

    结果如下

    Page not found (404)
    Request Method:	GET
    Request URL:	http://127.0.0.1:8080/app1/book/1/
    Using the URLconf defined in cbv.urls, Django tried these URL patterns, in this order:
    admin/
    app1/ test/
    app1/ book/
    app1/ book/(?P<id>d+)/
    The current path, app1/book/1/, didn't match any of these.
    

     感觉很奇怪,为什么我明明写了带正则表达式的url匹配项,但是为什么匹配不到呢?

    查看django的文档,路径如下

    https://docs.djangoproject.com/en/2.0/topics/http/urls/

    发现django2.0版本还有个re_path的方法,这个方法才可以使用正则表达式

    使用re_path方法,就可以使用正则表达式了,枉我学了这么多年的django了,惭愧惭愧

    from django.contrib import admin
    from django.urls import path
    from app1 import views
    from django.urls import re_path
    urlpatterns = [
        # path('admin/', admin.site.urls),
        path('test/', views.Test.as_view()),
        path('book/', views.Book_modelserializer_cbv.as_view()),
        re_path('book/(?P<id>d+)/', views.Book_Detail_modelserializer_cbv.as_view()),
    ]
    

    这样就可以正常匹配到我们想要的url了

  • 相关阅读:
    接口和抽象类的异同点
    实体对象间传值克隆
    什么是反射&反射的8个类的用法
    ERP中反射的两个实例
    基础02 Java 跨平台原理
    基础01 dos命令
    lists删除
    多字段 java对象排序
    Java对象排序
    MySQL表中数据的迁移
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/10451937.html
Copyright © 2020-2023  润新知