django - 如何添加字段以安全隐藏
问题描述
我有一个表单,它在提交时会保存一些数据,其中一个字段是用户 ID 的外键。我想传递这个 request.user.id 值而不显示在 HTML 代码中(出于安全原因,我不希望人们从检查中更改它)。
这是 HTML:
<form method="POST" action="">
{% csrf_token %}
<div class="container-fluid my-3">
<div class="row justify-content-center">
{% for field in form %}
<div class="{% if forloop.counter0 == 0 %} col-2 {% else %} col-1 {% endif %}">
{{ field }}
</div>
{% endfor %}
<div class="col-1">
<input class="btn btn-primary" type="submit" display="inline" id='test'>
</div>
</div>
</div>
这是模型:
class SaleEntry(models.Model):
date = models.DateField()
ebay_price = models.FloatField()
amazon_price = models.FloatField()
ebay_tax = models.FloatField()
paypal_tax = models.FloatField()
tm_fee = models.FloatField(default=0.3)
promoted = models.FloatField(default=0.0)
profit = models.FloatField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
这是表格:
class SaleEntryForm(ModelForm):
class Meta:
model = SaleEntry
fields = [
'date',
'ebay_price',
'amazon_price',
'ebay_tax',
'paypal_tax',
'tm_fee',
'promoted',
'profit'
]
widgets = {
'date': DateInput(attrs={'class': 'form-control'}),
'ebay_price': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'eBay Price', 'id':'f_ebay_price', 'onchange': 'calc_profit()'}),
'amazon_price': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'Amazon Price', 'id':'f_amazon_price', 'onchange': 'calc_profit()'}),
'ebay_tax': forms.NumberInput(attrs={'class': 'form-control col-1', 'placeholder': 'eBay Tax', 'id':'f_ebay_tax', 'onchange': 'calc_profit()'}),
'paypal_tax': forms.NumberInput(attrs={'class': 'form-control col-1', 'placeholder': 'Paypal Tax', 'id':'f_paypal_tax', 'onchange': 'calc_profit()'}),
'tm_fee': forms.NumberInput(attrs={'class': 'form-control col-1', 'placeholder': 'TM Fee', 'id':'f_tm_fee', 'onchange': 'calc_profit()'}),
'promoted': forms.NumberInput(attrs={'class': 'form-control col-1', 'placeholder': 'Promoted', 'id':'f_promoted', 'onchange': 'calc_profit()'}),
'profit': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'Profit', 'readonly':'true', 'id':'f_profit'}),
}
我无法保存这样的表单,因为我需要传递 user_id。
解决方案
您可以通过使用直接从视图中获取当前用户request.user
这可以在您的表单中使用直接传递到您的 forms.py'__init__'
中。
您可以在此处找到更多信息: 如何在 django 的表单中将用户名传递给函数?
推荐阅读
- postgresql - 在 Cakephp 旧框架中上传图片
- php - php oracle 12c:并非所有变量都绑定在
- sql - 获取整数值列表的总和
- javascript - 在 React 中单击按钮后,如何修复每次调用两次调度函数?
- c# - EntityFramework 原始 SQL 插入与输出不起作用
- xcode - 无法在 iOS 模拟器上运行颤振应用程序。已经尝试了很多东西
- typescript - TypeScript 接口和动态键
- r - 如何根据单独数据框中的值计算数据框中的新列?
- firebase - Firestore 安全规则 get()。存在()
- python - 为什么 tkinter GUI 不能使用 pythonw 工作(为了隐藏命令行)?