Django pass变量与表单提交

Django 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

我有一个用户提交的表单。他们将填写前3个字段,然后我想同时记录一个变量

例如: 他们将填写姓名、出生日期、地址,然后按提交。但是,我还希望在每次提交表单时捕获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">
任何帮助都将不胜感激。谢谢

将其设置为“保存”

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>