【问题标题】:form is not getting rendered in django表单没有在 Django 中呈现
【发布时间】:2020-02-09 11:28:59
【问题描述】:

模型类是:

class Product(models.Model):
   name=models.CharField(max_length=120)
   address=models.CharField(max_length=120)
   trek=models.CharField(max_length=120)
   transid=models.CharField(max_length=20 ,default="")

表单类是

class formm(forms.ModelForm):
class Meta:
    model=Product
    fields=('name','address','trek','transid')
    #fields="__all__"
    # exclude=['title']

html的表单部分是

<div class="jumbotron">

<form method="post">
{% csrf_token %}



  {{ form.as_p }}



   <input class="btn btn-primary" type="submit" value="SUBMIT"/>

   </form>
   </div>

视图中的函数是

def book(request):

    form=formm()
    if request.method == 'POST':
        form = formm(request.POST)
        if form.is_valid():

           form.save()
           return redirect('/')

        else:
              form=formm()

    return render(request, 'trek/contact.html', {'form': form})

呈现的html是:

  <!DOCTYPE html>
  <html lang="en">
<head>
 <body>
 <div class="container">

 <form method="post">
 {% csrf_token %}
  {{ form.as_p }}
  <input class="btn btn-primary" type="submit" value="SUBMIT"/>

  </form>
   </div>
  </body>
  </head>

  </html>

表单未呈现。仅显示提交按钮。 没有识别错误。

所有导入都正确完成。我以前也做过这种类型的东西,但从未发生过。

【问题讨论】:

  • 这不是直接答案,因为我没有发现任何问题。但是,您应该将“formm”重命名为其他名称,这有点难以阅读。同样在您的代码中,“formm”中的“class Meta”是否缩进?因为在你的问题中它不是。
  • 是的,它是缩进的
  • @Vipulsaklani:您问题中的代码没有正确缩进。
  • 你能把你的import也发到你的view吗?
  • 也请发布最终渲染的html

标签: python html django


【解决方案1】:

您的返回渲染是否具有正确的模板 (trek/contact.html)?您说您的表单在&lt;div class="jumbotron"&gt; 中,但它在呈现的html 中的&lt;div class="container"&gt; 中。此外,您的&lt;body&gt; 标记在&lt;head&gt; 标记内呈现,我不确定这是否会导致某些浏览器出现问题。

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多