我有一个用户提交的表单。他们将填写前3个字段,然后我想把变量放在同一时间。
例如: 他们将填写姓名,DOB,地址,然后按提交。但是,我还想在每次提交表单时捕获IP地址。我正在使用ipware将IP地址转换为views.py中的变量。但是,如何将此IP变量包含在其他字段中。
Views.py
def server_update(request, pk, template_name='servers/server_form.html'):
server = get_object_or_404(Server, pk=pk)
form = ServerForm(request.POST or None, instance=server)
if form.is_valid():
form.save()
return redirect('server_list')
return render(request, template_name, {'form':form})
server_form.html
<form method="post">{% csrf_token %}
<!-- {{ form.as_p }} this brings in the whole form -->
Name <br>
{{ form.name }} <br>
Order <br>
{{ form.order }} <br>
First name <br>
{{ form.first_name }} <br><br>
<input type="submit" value="Submit" />
</form>
<table cellpadding="0" cellspacing="0">
models.py
class Server(models.Model):
name = models.CharField(max_length=200)
order = models.IntegerField()
first_name = models.CharField(max_length=250, blank=True, null=True)
ip = models.CharField(max_length=250, blank=True, null=True)
def __unicode__(self):
return self.name
def get_absolute_url(self):
return reverse('server_edit', kwargs={'pk': self.pk})
任何帮助将不胜感激。感谢
答案 0 :(得分:2)
将其设置为保存。
if form.is_valid():
obj = form.save(commit=False)
obj.ip = get_ip_from_wherever()
obj.save()
return redirect('server_list')
答案 1 :(得分:0)
制作这样的表格
ServerForm(ModelForm):
class Meta:
model = Server
fields = ['name', 'order', 'first_name']
现在当这个表单被渲染时,在html中添加另一个字段ip。
<form>
{{yourform}}
<input type='hidden' name='ip' value={{your ip from view}}
</form>