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了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM