我试图根据用户是否登录来选择性地处理我的Django/Python应用程序中的字段。基本上,我有类似以下模型:基于Django中的用户认证设置模型字段的值
class Resource(models.Model):
uploaded = models.DateTimeField()
name = models.CharField(max_length=200)
description = models.CharField(max_length=500, blank=True)
file = models.CharField(max_length=200)
我想要做的是,如果用户发生在(登录并访问基于此资源文件属性设置为一个值对某些权限后端进行测试),以及用户未登录时的另一个值。因此,当任何客户端代码尝试访问Resource.file时,如果用户未登录'http: //mysite.com/dummy_resource_for_people_without_access'。但是,如果用户登录并通过了一些权限测试,那么resource.file的值实际上就是该资源的真实URL(包括访问该资源的任何安全密钥等)。
从我读过的内容看来,只能通过将请求上下文从视图函数传递给模型来考虑当前登录的用户。但是,在上面的用例中,我试图更加紧密地控制模型中的访问,而不需要客户端代码调用特殊函数。
是否需要将url存储在数据库中,还是可以动态生成?能够访问模型中的用户/请求不应该在django中用于各种设计最佳实践;您应该始终传递用户对象或重新考虑您的设计! – 2010-11-04 00:17:25
必须使用文件密钥以及其他安全数据动态生成URL。 – Faisal 2010-11-04 13:24:52