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 - 为什么我不能在Django民意测验教程第5部分的bug修复中不使用now变量

python - 数据插入错误:int()以10为底的无效文字

python - 如何使用reverse()将Django请求中的引荐来源网址与另一个网址进行比较?

python - 基于类的 View 中的可选url参数

django - 基于Django类的 View 的反向URL

python - 如何在Python中访问多级 Pandas 数据框-在数据框中存储彭博数据

python - 将VOC转换为labelMe

django - Django-为2个或更多字段创建唯一的数据库约束

python - Cython的cpython.datetime.datetime_new导致分段错误

python - Pandas -根据另一列中引用的列名创建列