模型对象的混淆 Django URL

Bel*_*dez 2 django obfuscation django-urls

我有一个看起来像这样的 Django 模型:

class Person(models.Model):

    name = models.CharField(max_length=32)
    place = models.ForeignKey(Place, related_name='people')
    approved = models.BooleanField()
    objects = PersonManager()

    @models.permalink
    def get_absolute_url(self):
        return('deal_details', (), {
            'person_slug': slugify(self.name),
        })
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经有了对象的绝对 URL。但是,我想创建一个难以猜测的 URL 来跟踪对象的批准过程。有人做过类似的事情和/或对我应该如何进行有任何建议吗?

我的第一个想法是创建一个像obfuscated_key这样的模型字段,它是通过save模型函数随机生成。然后 URL 看起来像/people/status/<id>/<obfuscated_key>/. 但也许有更好的方法来解决这个问题?

Dan*_*man 5

这样做的一个好方法是使用安装的密钥(来自 settings.py)散列对象的 ID。这就是密码重置电子邮件表单所做的 - 有一些有用的代码django.contrib.auth.tokens- 并且在最新的 SVN 版本中,django.contrib.auth.crypto.