You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中将base64格式uid变量转换为普通整型数字

Django模板uid转纯整型数字实现方案

Django模板没有内置的uidb64解码转整型能力,需要通过自定义模板过滤器实现,操作步骤如下:

步骤1:新增自定义模板过滤器

在你的应用目录下新建templatetags文件夹,新增custom_filters.py文件,写入以下代码:

from django import template
from django.utils.http import urlsafe_base64_decode

register = template.Library()

@register.filter
def uidb64_to_int(uidb64):
    try:
        # 先解码base64格式的uid,再转为整型
        uid = urlsafe_base64_decode(uidb64).decode()
        return int(uid)
    except (TypeError, ValueError, OverflowError):
        # 解码失败时可根据业务需求调整返回值
        return None

确保你的应用已经在settings.py的INSTALLED_APPS中注册,修改完成后重启Django服务让过滤器生效

步骤2:模板中调用过滤器

首先在模板顶部加载自定义过滤器:

{% load custom_filters %}

需要获取整型uid的位置直接调用过滤器即可,示例修改后的代码如下:

<a href="{% settings_value "BASE_URL" %}{% url 'password_reset_confirm' uidb64=uid token=token %}{% if link_query_params %}?{{ link_query_params }}&uid_int={{ uid|uidb64_to_int }}{% else %}?uid_int={{ uid|uidb64_to_int }}{% endif %}" target="_blank">

如果需要直接把路由参数替换为整型uid,先调整对应路由的参数匹配规则,再把uidb64=uid改为uid={{ uid|uidb64_to_int }}即可。

内容的提问来源于stack exchange,提问作者Павел Иванов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 10:24:02