Django父模板引入Model Form后仅显示提交按钮不显示字段如何解决
你的Model Form导入写法没有问题,无法渲染字段、提交跳转异常的问题均和模板上下文传递、表单action配置有关,具体修复步骤如下:
- 确认视图层已正确实例化表单并传递到父模板上下文
你需要在渲染父模板的视图函数中实例化PersonForm,并将其加入模板上下文,示例代码如下:from django.shortcuts import render, redirect from .forms import PersonForm def 你的视图函数(request): if request.method == 'POST': form = PersonForm(request.POST) if form.is_valid(): form.save() # 替换为你自己的提交成功跳转逻辑 return redirect('成功页路由名') else: form = PersonForm() # 必须将form对象传递到父模板上下文 return render(request, '你的父模板文件名.html', {'form': form}) - 修正子模板引入语法,显式传递表单上下文
默认{% include %}语法不会自动把父模板的所有变量传递给子模板,你需要加上with参数显式传值,将原来的引入写法改为:
修改后子模板中的{% include "form.html" with form=form %}{{ form }}就能读取到表单实例,正常渲染name、email对应的输入字段。 - 修正表单action配置解决跳转异常
你当前form标签设置的action="{% url 'name' %}"如果对应的路由是直接渲染form.html模板,提交请求后就会返回纯表单页面。你可以将action值留空,修改为:
这样提交请求会由当前父页面对应的路由处理,提交失败也会返回带表单的父页面,不会出现单独的form.html页面。<form action="" method="POST">
内容的提问来源于stack exchange,提问作者Omega Joctan
相关产品推荐
相关产品推荐

