Django 如何在没有模型的情况下从模板中的视图渲染表单?

Django 如何在没有模型的情况下从模板中的视图渲染表单?,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我的Django代码有问题。我正在尝试将表单从视图呈现到模板,我看到的只是提交按钮。我注意到我们可以通过像{form}这样引入表单来动态使用表单,但是当我使用它时,我只看到页面上的“提交”按钮(抱歉,我不知道如何在这里上传本地图像)。我加入了四个文件:views.py、home.html、forms.py和url.py 先谢谢你 home.html <form method="POST" novalidate action="/config"> {% csrf_token %}

我的Django代码有问题。我正在尝试将表单从视图呈现到模板,我看到的只是提交按钮。我注意到我们可以通过像{form}这样引入表单来动态使用表单,但是当我使用它时,我只看到页面上的“提交”按钮(抱歉,我不知道如何在这里上传本地图像)。我加入了四个文件:views.py、home.html、forms.py和url.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>
forms.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})
class InputHomeForm(forms.Form):
    mk = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
urlpatterns = [
    path('home/', blog_views.home, name='blog-home'),
]
url.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})
class InputHomeForm(forms.Form):
    mk = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
urlpatterns = [
    path('home/', blog_views.home, name='blog-home'),
]

我没有错误消息,因此我不知道问题所在

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>

{%csrf_令牌%}
家
{{form.as_p}}
注册
略微无关(参见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子句。

您在页面上实际看到了什么?html中缺少标记。我只看到“提交”按钮。@VanessaHONFO“它不工作”是对问题最无用的描述。如果您需要帮助,您必须提供准确和相关的信息,cf。是的,对不起,我正在发现平台。但我在第一篇文章中修改了文本。谢谢谢洛。很抱歉我编写了表单标签,粘贴时无法将其添加到代码中。但我做到了。所以,这不是问题所在。@VanessaHONFO如果你不提供关于你的问题的确切信息,试图帮助你只会浪费每个人的时间。你至少检查过呈现的HTML吗???你好。我修改了我的帖子来描述输出(很抱歉,我不知道如何上传本地图片给你看)。如何检查呈现的HTML?我删除了它,但没有更改。有关信息,在我的页面上,我只看到“提交”按钮。这里没有字段。@VanessaHONFO我没有说它能解决您当前的问题-实际上我非常明确地说它不会-,只是您这里还有(另一个)问题。好的,我理解。谢谢