python - Django 2 URL路径匹配负值

原文 标签 python django django-urls

在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),
    ...
]

相关文章:

python - sqlite3数据库写入中断时会发生什么?

python - 目录复制后找不到文件

mysql - Django查询集复杂查找

python - Django Count和Sum批注相互干扰

python - django-registration-redux-在/ accounts / register /下的NoReverseMatch

python - 如何合并两个 Pandas DataFrame并保持重复的值?

python - 另一个Flask / AWS WSGIPath错误,特别是:WSGIPath引用了一个不存在的文件

python - Django:命名URL /相同模板,不同命名URL

python - Django-URL路由问题(无法导入名称“URL”)

python - 在Django中无法匹配URL.conf中的URL?