我对 Django 还很陌生,正在尝试了解文档和基础知识。我的症结在于,我无法将页面 X 上的工作模型包含在另一个模板 Y 中。这是一个源自 django 文档的非常简单的示例。我查看了许多其他 SO 帖子,并尝试了明显的修复但无济于事。 (他们确实解决了更大的问题,但我留下了这个)
我最终计划将模型形式嵌入到模态中,但在现阶段甚至无法将它们渲染到其他 html 中,如果有一些帮助,我们将不胜感激。
SqLite 上的 Python 3.12、Django 4.2.7
型号:
class Title(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
def __str__(self):
return self.title
形式:
class TitleForm(ModelForm):
class Meta:
model = Title
fields = '__all__'
查看标题模型(作品):
def add_title(request):
if request.method == 'POST':
form = TitleForm()
context = {'form': form}
print(request.POST) # to see if the form works
return render(request, 'add_title.html', context)
else:
form = TitleForm()
return render(request, 'add_title.html', {'form': form})
这是add_title.html文件:
{% block content %}
<h1>Test Form</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
{% endblock %}
模型表单正在页面 127.0.0.1/add_title.html 上运行:
我希望将此表单嵌入到 127.0.0.1/page1 中。如果我能做到这一点,我应该能够最终将表单包含在模态或其他任何内容中。 这是page1.html
{% extends 'base.html' %}
{% block content %}
{% include "include.html" %} # a test of just pure html, renders fine
{% include "add_title.html" %} # this only renders the submit button
{% endblock %}
查看第1页:
def page1(request):
return render(request, 'page1.html')
页面渲染时,通过include渲染另一个纯html文件,并渲染add_title.html中的html,但不渲染两个表单字段。
谢谢!
好吧,您没有将
form
传递给上下文,因此它无法渲染它。因此,您需要将其包含在第二页的上下文中:
def page1(request):
return render(request, 'page1.html', {'form': TitleForm()})