我的Django代码有问题。我正在尝试从视图到模板渲染表单,我只是看到提交按钮。我注意到我们可以通过引入{{form}}这样的形式来动态使用表单,但是当我使用它时,我只是在页面上看到“提交”按钮(抱歉,我不知道如何在此处上传本地图像)。我加入了四个文件:views.py,home.html,forms.py和urls.py 预先谢谢你
home.html
<form method="POST" novalidate action="/config">
{% csrf_token %}
<fieldset>
<legend class="border-bottom mb-4">Home</legend>
{{ form.as_p }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Sign Up</button>
</div>
</form>
views.py
def inputHome(request):
form = InputHomeForm()
if request.method == 'POST':
form = InputHomeForm(request.POST)
if form.is_valid():
mk = form.cleaned_data['mk']
return HttpResponseRedirect('blog-config')
else:
form = InputHomeForm()
return render(request, 'blog/home.html', {'form': form})
forms.py
class InputHomeForm(forms.Form):
mk = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
urls.py
urlpatterns = [
path('home/', blog_views.home, name='blog-home'),
]
我没有错误消息,所以我不知道问题所在。
答案 0 :(得分:1)
您缺少html中的表单标签。 HTML应该是
<form method='post'>
{% csrf_token %}
<fieldset>
<legend class="border-bottom mb-4">Home</legend>
{{ form.as_p }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Sign Up</button>
</div>
</form>
答案 1 :(得分:0)
略有关联(请参阅Nishant对主要问题的回答),但在这里:
if request.method == 'POST':
form = InputHomeForm(request.POST)
if form.is_valid():
mk = form.cleaned_data['mk']
return HttpResponseRedirect('blog-config')
else:
form = InputHomeForm()
在else子句中,将绑定的无效表单(带有验证错误)替换为未绑定的表单,因此永远不会收到错误消息。只需删除整个else子句即可。