如何在python django中创建十六进制链接?
在我的模型文件中,我有一个名为Question的类,我正在使用如何在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,
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系统)