共享来自 uuid4 的 URL 代?
Sharing URL generation from uuid4?
我在弄清楚如何生成用户友好的产品共享链接时遇到了一些问题。
我目前正在使用 /product/{uuid4_of_said_product}
这工作得很好 - 但它有点用户不友好 - 它有点长而且丑陋。
而且我不希望使用和 id,因为它会允许用户使用 "guess" 产品。并不是说这是一个太大的问题 - 我想避免它。
关于如何根据唯一的项目 ID 或 uuid 生成唯一的、用户友好的、简短的共享 URL,您有什么提示吗?
这些你试过吗https://github.com/corpix/shortid and one for django here https://github.com/nebstrebor/django-shortuuidfield
根据 Seluck 的建议,我决定使用 base64 编码和解码:
在模型中,我的 "link" 属性 现在是根据标准 url + base64.urlsafe_b64encode(str(media_id))
构建的
我用来匹配base64模式的url模式:
base64_pattern = r'(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$'
最后在视图中我们解码 id 以加载正确的数据:
media_id = base64.urlsafe_b64decode(str(media_id))
media = Media.objects.get(pk=media_id)
我在弄清楚如何生成用户友好的产品共享链接时遇到了一些问题。
我目前正在使用 /product/{uuid4_of_said_product}
这工作得很好 - 但它有点用户不友好 - 它有点长而且丑陋。
而且我不希望使用和 id,因为它会允许用户使用 "guess" 产品。并不是说这是一个太大的问题 - 我想避免它。
关于如何根据唯一的项目 ID 或 uuid 生成唯一的、用户友好的、简短的共享 URL,您有什么提示吗?
这些你试过吗https://github.com/corpix/shortid and one for django here https://github.com/nebstrebor/django-shortuuidfield
根据 Seluck 的建议,我决定使用 base64 编码和解码:
在模型中,我的 "link" 属性 现在是根据标准 url + base64.urlsafe_b64encode(str(media_id))
我用来匹配base64模式的url模式:
base64_pattern = r'(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$'
最后在视图中我们解码 id 以加载正确的数据:
media_id = base64.urlsafe_b64decode(str(media_id))
media = Media.objects.get(pk=media_id)