Django pass变量与表单提交
我有一个用户提交的表单。他们将填写前3个字段,然后我想同时记录一个变量 例如: 他们将填写姓名、出生日期、地址,然后按提交。但是,我还希望在每次提交表单时捕获IP地址。我正在使用ipware将IP地址放入views.py中的一个变量中。但我如何将这个IP变量包含在其他字段中提交呢 Views.pyDjango pass变量与表单提交,django,Django,我有一个用户提交的表单。他们将填写前3个字段,然后我想同时记录一个变量 例如: 他们将填写姓名、出生日期、地址,然后按提交。但是,我还希望在每次提交表单时捕获IP地址。我正在使用ipware将IP地址放入views.py中的一个变量中。但我如何将这个IP变量包含在其他字段中提交呢 Views.py def server_update(request, pk, template_name='servers/server_form.html'): server = get_object_or
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">
任何帮助都将不胜感激。谢谢将其设置为“保存”
if form.is_valid():
obj = form.save(commit=False)
obj.ip = get_ip_from_wherever()
obj.save()
return redirect('server_list')
把你的表格做成这样
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>
{{yourform}}
在呈现窗体时,将ip地址与窗体一起发送,并在窗体内创建一个隐藏字段来存储ip。然后使用表单submit-get-itThanks@AjayGupta,这似乎是最好的主意。我还不太熟悉表格。我有我的表单字段{{form.ip}}和我的ip变量{{ip}}。我如何把它们放在一起,并隐藏表单字段。谢谢:)这就是目前我的表单的设置方式class-ServerForm(ModelForm):class-Meta:model=Server-fields=['name','order','first\u-name','ip']谢谢@Ajay,我尝试了这一个,将变量输入到字段中效果很好,但是我相信在发布后我可能不得不在视图中执行其他操作,因为它没有保存IP。可能是因为我的表单只设置了3个字段,所以这就是form.save要查找的全部内容。是的,在这种情况下,您必须显式保存此字段。类似于form.ip=your_-ip然后form.save()的内容
<form>
{{yourform}}
<input type='hidden' name='ip' value={{your ip from view}}
</form>