Django和Ajax安全问题

2024-10-01 02:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个“模型”

class messages(models.Model):
    status_choices = (
        (u'read',u'read'),
        (u'unread',u'unread')
        )
    user = models.ForeignKey(User)
    message = models.TextField()
    status = models.CharField(max_length=6,choices=status_choices,default='unread')
    sender = models.ForeignKey(User,related_name="sender")

这是我的视图,它获取用户消息并将其传递给javascript。在

^{pr2}$

现在我有以下顾虑

  1. 我无法确定上述返回的对象视图。所以我必须将视图返回的“message”对象发送到javascript。在
  2. 将python对象传递到javascript而不在django端对对象进行jsonfication是否安全?如果没有,那么会出现什么问题?在

那么,你对我的问题有什么看法?在


Tags: 对象模型视图messagereadmodelsstatusjavascript
1条回答
网友
1楼 · 发布于 2024-10-01 02:30:15

你为什么不能把你的对象具体化?在发送对象的情况下(除非有处理转换的中间件,否则我怀疑您可以发送对象),它将对其进行pickle处理并以字符串形式发送,因此无论发生什么情况,您都可以对任何对象进行jsonification。在

例如,如果我想从名为“Company”的对象发送所有信息:

comp = Company.objects.all()[0]
info = {"name": comp.name, "url": comp.url, "created_on": datetime.strftime(comp.created_on, "%d-%m-%Y")}
return HttpResponse(json.dumps(info))

请注意,您发送的所有内容都应该是字符串(或将自动转换为字符串的整数)。在

在javascript中发送json之后,只需获取对象并对其进行解析:

obj = JSON.parse(response)

就这样!关于安全问题,我想到的唯一问题是,您发送的信息可能不会像对象id那样使用,而且不会有真正的安全风险。在

现在,如果要发送渲染视图,以便使用模板的功能,可以执行以下操作:

^{pr2}$

现在在ajax中,您将收到呈现的模板,您可以立即使用它,而不需要json。在

相关问题 更多 >