Django 评论 security_hash
Django comments security_hash
在名为 "security_hash" 的 HiddenInput 字段中出现错误
它在 documentation 中说如果我在我的模板中使用 {{ form }} 这些值会自动创建
但我没有使用模板,而只是 comments/post/ 端点和 POST 数据如下:
如何在没有这个额外视图作为 POST 值传递的情况下获取 security_hash 值?
编辑:我在想是否可以将 {{ form.security_hash }} 值从 template/view 传递到幕后的表单,这样就可以避免这个错误。
Edit2:为了澄清,有问题的 security_hash 字段是 shown here in code security_hash 值看起来像是从 'initial_security_hash' 函数生成的,该函数使用 content_type, object_pk
和 timestamp
字段在第 73 行生成散列,此函数在第 69 行调用。
因此,我也更加困惑为什么我在 content_type, object_pk
和 timestamp
字段中传递时不接受我的输入
发生这种情况是因为安全散列是从实例化的 CommentSecurityForm
生成的。然后安全散列值作为隐藏字段包含在内并通过 POST 请求传回,此时它被验证。
即使您将 content_type
、object_pk
和 timestamp
字段传递给请求,也没关系,因为您需要 security_hash
在 提交 POST 请求之前值 。
在此处查看文档 - https://github.com/django/django-contrib-comments/blob/master/django_comments/forms.py#L62
我猜你没有使用提供的 CommentSecurityForm
,它会自动包含安全验证字段。
如果这个假设是正确的,你应该实例化表单,比如
my_form = CommentSecurityForm(users.MyUser)
security_dict = my_form.generate_security_data()
然后,此 security_dict
包含以下键 - content_type
、object_pk
、timestamp
、security_hash
。然后,您需要将这些值传递到您的 POST 请求发起的任何上下文,并将它们包含在请求中以通过安全验证。
在名为 "security_hash" 的 HiddenInput 字段中出现错误
它在 documentation 中说如果我在我的模板中使用 {{ form }} 这些值会自动创建
但我没有使用模板,而只是 comments/post/ 端点和 POST 数据如下:
如何在没有这个额外视图作为 POST 值传递的情况下获取 security_hash 值?
编辑:我在想是否可以将 {{ form.security_hash }} 值从 template/view 传递到幕后的表单,这样就可以避免这个错误。
Edit2:为了澄清,有问题的 security_hash 字段是 shown here in code security_hash 值看起来像是从 'initial_security_hash' 函数生成的,该函数使用 content_type, object_pk
和 timestamp
字段在第 73 行生成散列,此函数在第 69 行调用。
因此,我也更加困惑为什么我在 content_type, object_pk
和 timestamp
字段中传递时不接受我的输入
发生这种情况是因为安全散列是从实例化的 CommentSecurityForm
生成的。然后安全散列值作为隐藏字段包含在内并通过 POST 请求传回,此时它被验证。
即使您将 content_type
、object_pk
和 timestamp
字段传递给请求,也没关系,因为您需要 security_hash
在 提交 POST 请求之前值 。
在此处查看文档 - https://github.com/django/django-contrib-comments/blob/master/django_comments/forms.py#L62
我猜你没有使用提供的 CommentSecurityForm
,它会自动包含安全验证字段。
如果这个假设是正确的,你应该实例化表单,比如
my_form = CommentSecurityForm(users.MyUser)
security_dict = my_form.generate_security_data()
然后,此 security_dict
包含以下键 - content_type
、object_pk
、timestamp
、security_hash
。然后,您需要将这些值传递到您的 POST 请求发起的任何上下文,并将它们包含在请求中以通过安全验证。