当你在Django中将模型表单包含在父模板中时,如果表单不显示,可能是由于以下几个原因:
在Django中,模板继承允许你创建一个基础模板(父模板),其他模板可以继承这个基础模板并添加或覆盖特定部分。模型表单是一个基于Django模型的表单类,它可以自动为你创建表单字段。
block
,或者在子模板中没有正确地覆盖这些block
。block
,并且在子模板中正确地覆盖了这个block
。block
,并且在子模板中正确地覆盖了这个block
。block
,并且在子模板中正确地覆盖了这个block
。forms.py
文件中,并且在视图中正确导入。forms.py
文件中,并且在视图中正确导入。{% csrf_token %}
,Django的安全机制会阻止表单提交。{% csrf_token %}
。假设你有一个简单的模型MyModel
和一个对应的表单MyModelForm
:
# models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
# forms.py
from django import forms
from .models import MyModel
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
在视图中:
# views.py
from django.shortcuts import render
from .forms import MyModelForm
def my_view(request):
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
form.save()
else:
form = MyModelForm()
return render(request, 'form_page.html', {'form': form})
在模板中:
<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
<!-- form_page.html -->
{% extends "base.html" %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
{% endblock %}
通过以上步骤,你应该能够解决Django模型表单在父模板中不显示的问题。
领取专属 10元无门槛券
手把手带您无忧上云