在Django <2中,执行此操作的通常方法是使用regex表达式。但是现在建议在Django => 2中使用path()而不是url()
path('account/<int:code>/', views.account_code, name='account-code')
看起来不错,并且与网址格式匹配效果很好
/account/23/
/account/3000/
但是,这个问题是我也希望它匹配负整数,例如
/account/-23/
请如何使用path()执行此操作?
最佳答案
您可以编写custom路径转换器:
class NegativeIntConverter:
regex = '-?\d+'
def to_python(self, value):
return int(value)
def to_url(self, value):
return '%d' % value
在urls.py中:
from django.urls import register_converter, path
from . import converters, views
register_converter(converters.NegativeIntConverter, 'negint')
urlpatterns = [
path('account/<negint:code>/', views.account_code),
...
]