【发布时间】:2013-08-08 02:21:40
【问题描述】:
这是一个棘手的问题,所以在假设它是重复的之前请先阅读:)。
我在一个 Django 网站上使用Braintree Payments,而payment form html 的信用卡号需要如下所示:
<input type="text" size="20" autocomplete="off" data-encrypted-name="number" />
我的目前看起来像这样:
<input type="text" size="20" autocomplete="off" name="number">
我可以以某种方式将name 重命名为data-encrypted-name 吗?或者,我可以完全隐藏/删除 name 属性吗?如果是这样,我可以轻松地为 Braintree-friendly 属性添加自定义属性:
class SignupForm(forms.Form):
...snip...
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
self.fields['number'].widget.attrs['data-encrypted-name'] = "number"
仅供参考,我在 __init__ 中尝试过,但没有运气:
self.fields['number'].widget.attrs['name'] = None
重要提示:不要对任何捕获的字段使用名称属性 敏感的支付信息,例如信用卡号或 CVV。 删除此属性可防止它们访问您的服务器 纯文本,因此会缩小您的 PCI 合规范围。
另外,我使用的是 django crispy forms,所以我宁愿在我的 forms.py 中解决这个问题,而不是在模板中通过 html 调整来保持它干燥。
【问题讨论】: