如何在Django Views中获取提交的表单文本输入框的id属性值
浏览器提交表单时,默认只会发送表单元素的name属性和对应输入值作为请求参数,输入框的id属性是供前端DOM操作使用的,不会自动随表单提交到后端,所以你没办法直接从request.POST里拿到这个id值,需要手动调整前端表单逻辑把id值传到后端。
以下是两种常用实现方案:
方案1:添加隐藏表单域传递id值
这是最常用、兼容性最好的实现方式,你只需要在同一个表单内新增一个隐藏类型的input,把输入框的id作为这个隐藏域的value即可:
前端表单代码调整:
<input type="text" name="textAnswer" maxlength="50" id="ed57a954-7afd-47ac-b6d4-979198455aa5" class="textinput textInput form-control"> <!-- 新增隐藏域传递输入框id --> <input type="hidden" name="textAnswer_id" value="ed57a954-7afd-47ac-b6d4-979198455aa5">
后端Django视图中获取代码:
userTypedValue = request.POST.get('textAnswer') inputId = request.POST.get('textAnswer_id')
方案2:把id嵌入原有输入框的name属性
如果你的表单是动态生成多个同类型输入框的场景,可以把id直接拼在输入框的name属性值里,后端通过拆分name字符串拿到id:
前端代码示例:
<input type="text" name="textAnswer_ed57a954-7afd-47ac-b6d4-979198455aa5" maxlength="50" id="ed57a954-7afd-47ac-b6d4-979198455aa5" class="textinput textInput form-control">
后端获取示例:
for key in request.POST.keys(): if key.startswith('textAnswer_'): userTypedValue = request.POST.get(key) inputId = key.split('_', 1)[1] break
如果你的输入框id是固定值,也可以直接在后端代码里写死这个id值,不需要额外传递。
内容的提问来源于stack exchange,提问作者Divit Rao
相关产品推荐
相关产品推荐

