如何在我的 URL 中加密 <int:pk>?
How can I encrypt <int:pk> inside my URLs?
我认为这是一个愚蠢的问题,但我无论如何也无法解决这个问题。我正在用 Django 中的聊天室构建一个简单的纸牌游戏。当一个mod创建了一个房间,要进入这个房间你需要使用下面的URL:
cardgame/room/<int:pk>
其中 <int: pk>
的内部被所创建房间的 id
替换。我的问题是一些随机用户可以在没有被邀请的情况下使用 cardgame/room/x
之类的 link 进入 id=x
的房间。我想在创建房间时加密 ID 号,就像创建 Google 会议电话时一样,但我不知道如何使用 Django/Python.
我该怎么做?
如何将 UUID 字段添加到您的模型以创建通用唯一标识符,然后将其用作路径变量?
像这样:
class Room(models.Model):
unique_id = models.UUIDField(default=uuid.uuid4, unique=True)
可能重复
Using a UUID as a primary key...
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
这改变了 django 模型的默认行为,它们将 id
创建为 AutoField
。您可以这样做或添加一个额外的 uuid 字段
我认为这是一个愚蠢的问题,但我无论如何也无法解决这个问题。我正在用 Django 中的聊天室构建一个简单的纸牌游戏。当一个mod创建了一个房间,要进入这个房间你需要使用下面的URL:
cardgame/room/<int:pk>
其中 <int: pk>
的内部被所创建房间的 id
替换。我的问题是一些随机用户可以在没有被邀请的情况下使用 cardgame/room/x
之类的 link 进入 id=x
的房间。我想在创建房间时加密 ID 号,就像创建 Google 会议电话时一样,但我不知道如何使用 Django/Python.
我该怎么做?
如何将 UUID 字段添加到您的模型以创建通用唯一标识符,然后将其用作路径变量?
像这样:
class Room(models.Model):
unique_id = models.UUIDField(default=uuid.uuid4, unique=True)
可能重复 Using a UUID as a primary key...
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
这改变了 django 模型的默认行为,它们将 id
创建为 AutoField
。您可以这样做或添加一个额外的 uuid 字段