首页 > 解决方案 > 表单没有在 django 中呈现

问题描述

模型类是:

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>

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

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

标签: pythonhtmldjango

解决方案


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


推荐阅读