如何在python django中创建十六进制链接?

如何在python django中创建十六进制链接?,python,django,Python,Django,在我的模型文件中,我有一个名为Question的类,我正在使用path('/',views.QuestionCurrent)作为当前问题的链接。我想把链接设为十六进制而不是int。我可以这样做吗?如果可以的话,怎么做?你可以做一个简单的例子 例如,您可以在文件app/converters.py中定义此类转换器: # app/converters.py class HexConverter: regex = '[0-9a-fA-F]+' def to_python(self,

在我的模型文件中,我有一个名为Question的类,我正在使用
path('/',views.QuestionCurrent)
作为当前问题的链接。我想把链接设为十六进制而不是int。我可以这样做吗?如果可以的话,怎么做?

你可以做一个简单的例子

例如,您可以在文件
app/converters.py
中定义此类转换器:

# app/converters.py

class HexConverter:
    regex = '[0-9a-fA-F]+'

    def to_python(self, value):
        return int(value, 16)

    def to_url(self, value):
        if isinstance(value, str):
            value = int(value)
        return hex(value)[2:]
#app/converters.py
类转换器:
正则表达式='[0-9a-fA-F]+'
定义到python(自身,值):
返回int(值,16)
def到_url(自身,值):
如果isinstance(值,str):
value=int(值)
返回十六进制(值)[2:]
接下来,您可以注册路径转换器,然后指定:

from django.urls import path, register_converter
from app import converters, views

register_converter(converters.HexConverter, 'hex')

urlpatterns = [
    path('<hex:pk>/', views.QuestionCurrent, name='question_current'),
]
从django.url导入路径,注册\u转换器
从应用程序导入转换器、视图
寄存器_转换器(converters.HexConverter,'hex')
URL模式=[
路径(“/”,views.QuestionCurrent,name='question\u current'),
]

例如,如果您现在访问
/1f/
,传递给当前
问题的主键
pk
将为31。如果在
{%url…%}
模板标记中使用
question\u current
,也会发生同样的情况。如果你写
{%url'question\u current'pk=31%}
,它会被翻译成
/1f/

,所以它是一个十六进制数?还是十六进制字符串?我的链接是int,我想成为十六进制数(0-F系统)