【问题标题】:Django, form not rendering in the templateDjango,表单未在模板中呈现
【发布时间】:2020-02-05 21:39:52
【问题描述】:

表单未在模板中呈现。

这个视图没有模型,我知道,这是一个散列序列号的快速工具。因此,我使用的是 form.Forms,而不是 ModelForms。因此,与其经历从头开始创建表单的繁琐工作,而且当我将其添加到我当前的站点时,使用表单是有意义的,但我无法让它呈现,它真的很简单,有两个字段和一个提交按钮。由于某种原因,表单字段没有显示,但提交按钮是。

表格

class VoiceSearchForm(forms.Form):
    hw_number = forms.CharField(max_length=6)
    ca_serial = forms.CharField(max_length=16)

查看

def voice_search_view(request):
    form = VoiceSearchForm(request.POST)
    if request.method == 'POST':
        form = VoiceSearchForm()
        if form.is_valid():
            hw_number = form.cleaned_data['hw_number']
            ca_serial = form.cleaned_data['ca_serial']

        # Do stuff with the data collected. 

    return render(request, 'voice_search.html', {})

模板

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Voice Search</title>
  </head>
  <body>
    <h1>Hashing tool</h1>

    <form action="." class="voice_search"method="POST">
      {{ form.as_p }}
      {% csrf_token %}
      <input type="submit" class="btn" value="Submit">
    </form>
  </body>
</html>

我已经按照文档走了这么远,但我一定是复制了错误的东西,并且在谷歌上找不到任何东西,所以我怀疑在这个极其罕见的情况下,这是第一次发生这种情况。

【问题讨论】:

    标签: django django-forms django-templates django-views


    【解决方案1】:

    您需要将表单作为上下文传递以在模板中使用它。 在你看来改变这个:

        return render(request, 'voice_search.html', {})
    

    到这里:

        return render(request, 'voice_search.html', {'form': form})
    

    您可能还考虑使用名为form view 的基于类的通用视图。

    在您的情况下,它看起来像(未经测试):

    from django.views.generic.edit import FormView
    
    class VoiceSearchView(FormView):
        template_name = 'voice_search.html'
        form_class = VoiceSearchForm
    
        def form_valid(self, form):
            hw_number = form.cleaned_data['hw_number']
            ca_serial = form.cleaned_data['ca_serial']
            return super().form_valid(form)
    

    【讨论】:

    • 谢谢,准时!
    • 是的,谢谢,确实如此,我现在只需要弄清楚如何将我的回复回复给用户。
    猜你喜欢
    • 1970-01-01
    • 2019-10-27
    • 2014-02-06
    • 2019-02-23
    • 2016-12-06
    • 2020-06-15
    • 1970-01-01
    • 2020-09-06
    • 2014-11-16
    相关资源
    最近更新 更多