是不是要改用 re_path
啊?
URLconfs 中使用的 django.urls 函数
Day13 : path & re_path vs. url
Django 路由
沒看到是 register_converter
,不太熟
但你的自定義是不是沒有 def
和 return
依照官方例子,是要有下面的 def
和 return
的
不確定你的有沒有
class FourDigitYearConverter:
regex = '[0-9]{4}'
def to_python(self, value):
return int(value)
def to_url(self, value):
return '%04d' % value
from django.urls import path, register_converter
from . import converters, views
register_converter(converters.FourDigitYearConverter, 'yyyy')
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<yyyy:year>/', views.year_archive),
...
]
<yyyy:year>
依照定義,前面是你自定義(register_converter)名稱,後面是你在 view
要傳入的參數名稱
例如
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
/articles/2005/03/ 会匹配 URL 列表中的第三项。
也就是path('articles/<int:year>/<int:month>/', views.month_archive),
Django 会调用函数 views.month_archive(request, year=2005, month=3)
re 的話應該是這樣(?P<關鍵字>要擷取的參數)
re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
==
Django學習紀錄 16.URL配置與視圖進階技巧
Django3中urls.py里path与re_path的几种用法
感謝
1.Regular Expression 看來沒錯
auth (1 matched)
a (1 matched)
admin (0 matched)
2.register_converter/url_pattern 的用法可能才是正式原因所在
請參考官方教學(有範例)
有錯啦,我測試過了,給的正則也是測試過的。
我用 Regex 101 測試結果如下
對啊,這樣auth和a、admin都不符合啊。
我早上幫他測過了。符合的會有藍色標記。
^(?!(admin)$)
https://regex101.com/r/NGrFjx/1
^(?!admin$).*
https://regex101.com/r/QhGXPH/1
其實我連django內都測過了。
我大概猜到他想幹嘛,大概是前端用框架開發,並且用前端路由,但我覺得他的做法沒啥必要性。
這樣auth和a、admin都不符合啊。
請看一下各截圖右上角的小字
1 match 和 no match
總之
這問題和 RE 沒什麼太大關係
一般設定就可以處理了...
你注意看右邊的match group,問題是他抓到的是null啊...
match group抓到null傳到django的path converter裡那個值就是null。值是null,django就跳404。
他的問題就是正則出問題啦,我早上就開過django專案測試過了。包含path converter都整個測試過了。
明白了
樓主都不急,我們在討論個什麼勁
不如去